मुख्य सामग्री पर जाएं

Snowflake DATEADD: व्यावहारिक उदाहरणों के साथ एक संपूर्ण मार्गदर्शिका

वास्तविक-जीवन के उदाहरणों के साथ तिथि संशोधन के लिए Snowflake की DATEADD फ़ंक्शन का उपयोग करना सीखें। समय गणनाओं में महारत हासिल करें, एज केस संभालें, और अपनी SQL क्वेरीज़ के प्रदर्शन को अनुकूलित करें।
अपडेट किया गया 24 सित॰ 2026  · 10 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

Snowflake की DATEADD फ़ंक्शन किसी भी प्रकार के तिथि गणित के लिए अपेक्षाकृत सरल लेकिन शक्तिशाली विधि है, जो डेटा प्रोफेशनलों को किसी तिथि, समय, या टाइमस्टैम्प मान से निर्दिष्ट समयांतराल जोड़ने या घटाने की अनुमति देती है। 

DATEADD का उपयोग कैसे करें, यह समझने से डेटा विश्लेषकों और/या इंजीनियरों को सदस्यता अवधियों की गणना करके उपयोगी विश्लेषण करने, भविष्य की किसी भी तिथि के लिए पूर्वानुमान बनाने, और आगे के विश्लेषण के लिए समय-श्रृंखला डेटासेट उत्पन्न करने में मदद मिलेगी। 

इस ट्यूटोरियल में, आप फ़ंक्शन का वाक्य-विन्यास, इसे व्यावहारिक रूप से कैसे लागू किया जा सकता है, और Snowflake SQL में अपनी तिथि संशोधन क्षमताओं में DATEADD फ़ंक्शन की समग्र संभावनाओं के बारे में जानेंगे।

यदि आप Snowflake के साथ अभी शुरुआत कर रहे हैं, तो हमारी Snowflake Foundations कौशल ट्रैक अवश्य देखें। 

व्यवहार के लिए एक सैंपल डेटाबेस सेट करना

हम DATEADD के विवरण में जाने से पहले, आइए अपने उदाहरणों को अधिक व्यावहारिक और हाथ-से-हाथ बनाने के लिए तिथि-समृद्ध डेटा वाला एक सैंपल डेटाबेस बनाते हैं। वास्तविक डेटा के साथ काम करने से जैसे-जैसे हम फ़ंक्शन की क्षमताएँ सीखेंगे, अवधारणाएँ मजबूत होंगी।

1. Snowflake खाता बनाना (नए उपयोगकर्ताओं के लिए)

यदि आप Snowflake में नए हैं, तो आपको एक निःशुल्क ट्रायल खाता बनाना होगा जो 30 दिनों के लिए क्रेडिट प्रदान करता है। प्लेटफ़ॉर्म का व्यापक परिचय पाने के लिए, यह Introduction to Snowflake कोर्स देखें, जो मूल बातें और बुनियादी सिद्धांतों को कवर करता है।

2. अपनी वर्कशीट सेट करना

Snowflake में, SQL क्वेरीज़ “Worksheets” (नोटबुक्स जैसी) में चलाई जाती हैं। नई वर्कशीट बनाने के लिए:

  1. अपने Snowflake खाते में साइन इन करें
  2. मुख्य मेनू से Worksheets पर जाएँ
  3. नई वर्कशीट बनाने के लिए “+” बटन पर क्लिक करें
  4. इसे “DATEADD_Practice” नाम दें

यदि आप Snowflake इंटरफ़ेस में बिल्कुल नए हैं, तो यह Snowflake Tutorial For Beginners प्लेटफ़ॉर्म का एक सहायक वॉकथ्रू प्रदान करता है।

3. डेटाबेस और स्कीमा चुनना

इस ट्यूटोरियल के लिए, हम Snowflake Learning डेटाबेस और पब्लिक स्कीमा का उपयोग करेंगे:

-- Create database and schema
USE DATABASE SNOWFLAKE_LEARNING_DB;
USE SCHEMA PUBLIC;

4. सिंथेटिक डेटा और टेबल बनाना

हम विभिन्न परिदृश्यों में ‘DATEADD’ को प्रदर्शित करने के लिए तिथि-संबंधित डेटा वाली तीन टेबल बनाएँगे:

नोट: अपनी वर्कशीट में नीचे दिए कमांड्स को एक साथ चलाने के लिए “Command + Shift + Enter”/”Ctrl + Shift + Enter” का उपयोग करें:

-- Create subscription table
CREATE OR REPLACE TABLE subscriptions (
   subscription_id INTEGER,
   customer_id INTEGER,
   plan_name VARCHAR(50),
   start_date DATE,
   end_date DATE,
   billing_cycle VARCHAR(20)
);

-- Create orders table with timestamps
CREATE OR REPLACE TABLE orders (
   order_id INTEGER,
   customer_id INTEGER,
   order_timestamp TIMESTAMP_NTZ,
   delivery_estimate TIMESTAMP_NTZ,
   total_amount DECIMAL(10,2)
);

-- Create events table with time zones
CREATE OR REPLACE TABLE events (
   event_id INTEGER,
   event_name VARCHAR(100),
   event_timestamp TIMESTAMP_TZ,
   duration_minutes INTEGER
);

टेबल बनाने, अलग-अलग टेबल प्रकारों और सर्वोत्तम प्रथाओं के बारे में अधिक विवरण के लिए, Creating Tables in Snowflake देखें।

संकेत: सफलतापूर्वक निष्पादन के बाद आपको अपनी वर्कशीट से सभी मौजूदा क्वेरीज़ हटा देनी चाहिए।

5. सैंपल डेटा से टेबल्स भरना

आइए विविध तिथि और समय मानों के साथ सैंपल डेटा डालें:

-- Insert subscription data
INSERT INTO subscriptions VALUES
   (1001, 5001, 'Basic', '2023-01-15', '2023-07-15', 'Monthly'),
   (1002, 5002, 'Premium', '2023-02-28', '2024-02-28', 'Annual'),
   (1003, 5003, 'Premium', '2023-01-31', '2023-04-30', 'Quarterly'),
   (1004, 5001, 'Pro', '2022-12-15', '2023-12-15', 'Annual'),
   (1005, 5004, 'Basic', '2023-03-15', NULL, 'Monthly');

-- Insert orders with timestamps
INSERT INTO orders VALUES
   (10001, 5001, '2023-03-10 08:30:00', '2023-03-12 14:00:00', 125.99),
   (10002, 5002, '2023-03-10 12:15:30', '2023-03-11 09:00:00', 89.50),
   (10003, 5003, '2023-03-09 17:45:20', '2023-03-15 13:30:00', 245.00),
   (10004, 5001, '2023-02-28 23:59:59', '2023-03-05 10:00:00', 49.99),
   (10005, 5004, '2023-03-01 00:00:01', '2023-03-02 12:00:00', 175.25);

-- Insert events
INSERT INTO events VALUES
   (101, 'System Update', '2023-03-15 01:00:00'::TIMESTAMP_TZ, 120),
   (102, 'Maintenance', '2023-03-20 22:00:00'::TIMESTAMP_TZ, 60),
   (103, 'Data Migration', '2023-03-18 15:30:00'::TIMESTAMP_TZ, 180),
   (104, 'Backup', '2023-03-10 03:00:00'::TIMESTAMP_TZ, 45),
   (105, 'Security Audit', '2023-03-12 09:15:00'::TIMESTAMP_TZ, 90);

6. सैंपल डेटा का प्रमाणीकरण

आइए कुछ बुनियादी क्वेरीज़ चलाएँ ताकि पुष्टि हो सके कि हमारा डेटा सही ढंग से लोड हुआ है:

-- Check subscription data
SELECT * FROM subscriptions;

-- Check orders data
SELECT * FROM orders;

-- Check events data
SELECT * FROM events;

अब हमारे पास तीन टेबल्स वाला एक कार्यात्मक सैंपल डेटाबेस है जिसमें विभिन्न तिथि और टाइमस्टैम्प प्रारूप शामिल हैं। यह डेटासेट इस ट्यूटोरियल के बाकी हिस्से में DATEADD फ़ंक्शन की जाँच करने के लिए आधार के रूप में कार्य करेगा।

Snowflake DATEADD समझना: सिंटैक्स और पैरामीटर्स

Snowflake में तिथि गणितीय क्रियाओं के लिए DATEADD फ़ंक्शन आवश्यक है। यह आपको तिथि, समय, या टाइमस्टैम्प मानों में विशिष्ट समयांतराल जोड़ने या घटाने देता है। आइए इसके सिंटैक्स और पैरामीटर्स से शुरू करते हुए समझें कि यह फ़ंक्शन कैसे काम करता है।

फ़ंक्शन सिंटैक्स और पैरामीटर्स

DATEADD फ़ंक्शन का बुनियादी सिंटैक्स है:

DATEADD(date_part, value, date_or_timestamp_expression)

आइए प्रत्येक पैरामीटर को देखें:

-- Basic DATEADD example
SELECT
   DATEADD(MONTH, 3, '2023-01-15') AS three_months_later;

व्याख्या: यह क्वेरी 15 जनवरी, 2023 में 3 महीने जोड़ती है। पैरामीटर्स इस प्रकार काम करते हैं:

  • date_part (MONTH): वह समय इकाई निर्दिष्ट करता है जिसे हम जोड़/घटा रहे हैं
  • value (3): जोड़ने (धनात्मक) या घटाने (ऋणात्मक) के लिए इकाइयों की संख्या
  • date_or_timestamp_expression ('2023-01-15'): वह प्रारंभिक तिथि जिसे संशोधित करना है

आउटपुट:

THREE_MONTHS_LATER

-----------------

2023-04-15

समर्थित तिथि भाग

Snowflake, DATEADD के साथ कई तिथि भागों का समर्थन करता है:

-- Examples of different date parts
SELECT
   DATEADD(YEAR, 1, '2023-02-28') AS add_one_year,
   DATEADD(QUARTER, 2, '2023-01-31') AS add_two_quarters,
   DATEADD(MONTH, 3, '2023-01-31') AS add_three_months,
   DATEADD(WEEK, 2, '2023-03-15') AS add_two_weeks,
   DATEADD(DAY, 10, '2023-03-21') AS add_ten_days,
   DATEADD(HOUR, 12, '2023-03-10 08:30:00') AS add_twelve_hours,
   DATEADD(MINUTE, 45, '2023-03-10 08:30:00') AS add_forty_five_minutes,
   DATEADD(SECOND, 30, '2023-03-10 08:30:00') AS add_thirty_seconds;

अतिरिक्त समर्थित तिथि भागों में MILLISECOND, MICROSECOND, NANOSECOND, और CENTURY शामिल हैं।

ध्यान दें कि लीप वर्ष और माह-अंत तिथियों के लिए, Snowflake उपयुक्त समायोजन करता है। उदाहरण के लिए, 28 फरवरी, 2023 में एक वर्ष जोड़ने पर 29 फरवरी, 2024 (लीप वर्ष) प्राप्त होता है।

घटाने के लिए ऋणात्मक मानों का उपयोग

DATEADD फ़ंक्शन, ऋणात्मक मानों का उपयोग करके समयांतराल घटा भी सकता है:

-- Subtracting time intervals with negative values
SELECT
   DATEADD(MONTH, -3, '2023-03-15') AS three_months_ago,
   DATEADD(DAY, -7, CURRENT_DATE()) AS one_week_ago,
   DATEADD(HOUR, -48, CURRENT_TIMESTAMP()) AS two_days_ago_time;

व्याख्या:

  • पहला अभिव्यक्ति 15 मार्च, 2023 से 3 महीने घटाती है
  • दूसरी अभिव्यक्ति आज की तिथि से 7 दिन घटाती है
  • तीसरी अभिव्यक्ति वर्तमान टाइमस्टैम्प से 48 घंटे (2 दिन) घटाती है

आउटपुट:

THREE_MONTHS_AGO    ONE_WEEK_AGO    TWO_DAYS_AGO_TIME

----------------    ------------    -----------------

2025-02-10          2025-05-03      2025-05-08 07:22:30.183 -0700

रिटर्न टाइप का व्यवहार

DATEADD का रिटर्न टाइप इनपुट अभिव्यक्ति के प्रकार पर निर्भर करता है:

  • यदि इसे DATE पर लागू किया जाता है, तो यह DATE लौटाता है
  • यदि इसे TIMESTAMP पर लागू किया जाता है, तो यह TIMESTAMP लौटाता है
  • यदि इसे TIME पर लागू किया जाता है, तो यह TIME लौटाता है

DATEADD आपके इनपुट के मूल डेटा प्रकार को बनाए रखता है। यह व्यवहार समझना महत्वपूर्ण है क्योंकि यह प्रभावित करता है कि आप परिणाम का बाद के ऑपरेशनों में कैसे उपयोग कर सकते हैं। 

उदाहरण के लिए, यदि आप किसी DATE मान में घंटे जोड़ते हैं, तो परिणाम अभी भी DATE होगा (अर्थात समय भाग काट दिया जाएगा), जबकि TIMESTAMP में घंटे जोड़ने पर तिथि और समय दोनों घटक बने रहते हैं।

DATEADD फ़ंक्शन के इन मूल पैरामीटर्स और व्यवहारों को समझना उन उन्नत उपयोग मामलों के लिए आधार तैयार करेगा जिन्हें हम आगे के अनुभागों में देखेंगे।

व्यावहारिक DATEADD उदाहरण और उपयोग परिदृश्य

अब जब हम DATEADD का सिंटैक्स और व्यवहार समझ चुके हैं, तो आइए अपने सैंपल डेटा का उपयोग करके व्यावहारिक अनुप्रयोगों का पता लगाएँ। इस अनुभाग में, हम दिखाएँगे कि DATEADD वास्तविक व्यावसायिक समस्याओं को कैसे हल कर सकता है और डेटा विश्लेषण क्षमताओं को कैसे बढ़ा सकता है।

सदस्यता नवीनीकरण तिथियाँ गणना करना

एक आम व्यावसायिक आवश्यकता बिलिंग चक्र के आधार पर यह निर्धारित करना है कि सदस्यताएँ कब नवीनीकृत होंगी:

-- Calculate subscription renewal dates
SELECT
   subscription_id,
   customer_id,
   plan_name,
   start_date,
   billing_cycle,
   CASE
       WHEN billing_cycle = 'Monthly' THEN DATEADD(MONTH, 1, start_date)
       WHEN billing_cycle = 'Quarterly' THEN DATEADD(MONTH, 3, start_date)
       WHEN billing_cycle = 'Annual' THEN DATEADD(YEAR, 1, start_date)
   END AS first_renewal_date
FROM subscriptions;

व्याख्या: यह क्वेरी प्रत्येक सदस्यता के लिए उसके बिलिंग चक्र के आधार पर पहली नवीनीकरण तिथि की गणना करती है। हम DATEADD का उपयोग अलग-अलग तिथि भागों (MONTH या YEAR) और मानों (1, 3, या 1) के साथ करते हैं, जो बिलिंग चक्र पर निर्भर हैं।

आउटपुट:

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

ध्यान दें कि Snowflake 28 फरवरी से 28 फरवरी (लीप वर्ष) के संक्रमण को सही ढंग से संभालता है।

डिलीवरी विंडो का पूर्वानुमान

आइए ऑर्डर के लिए अनुमानित डिलीवरी विंडो की गणना करने के लिए DATEADD का उपयोग करें:

-- Calculate delivery windows based on order timestamps
SELECT
   order_id,
   customer_id,
   order_timestamp,
   delivery_estimate,
   DATEADD(HOUR, -12, delivery_estimate) AS delivery_window_start,
   delivery_estimate AS delivery_window_end,
   DATEDIFF('HOUR', order_timestamp, delivery_estimate) AS estimated_hours_to_delivery
FROM orders
ORDER BY order_id;

व्याख्या: यह क्वेरी:

  1. अनुमानित डिलीवरी समय से 12 घंटे घटाकर 12-घंटे की डिलीवरी विंडो बनाती है
  2. डिलीवरी विंडो की शुरुआत और समाप्ति, दोनों दिखाती है
  3. अनुमानित कुल डिलीवरी समय (घंटों में) की गणना करती है

आउटपुट:

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

तिथि डाइमेंशन टेबल बनाना

टाइम-सीरीज़ विश्लेषण के लिए अक्सर तिथि डाइमेंशन टेबल की आवश्यकता होती है। आइए इसे DATEADD का उपयोग करके बनाएँ:

-- Generate a date dimension table for analysis
WITH date_dimension AS (
   SELECT
       DATEADD(DAY, seq4(), '2023-01-01') AS calendar_date
   FROM TABLE(GENERATOR(ROWCOUNT => 365))
)
SELECT
   calendar_date,
   YEAR(calendar_date) AS year,
   MONTH(calendar_date) AS month,
   MONTHNAME(calendar_date) AS month_name,
   DAY(calendar_date) AS day,
   DAYOFWEEK(calendar_date) AS day_of_week,
   DAYNAME(calendar_date) AS day_name,
   CASE
       WHEN DAYOFWEEK(calendar_date) IN (0, 6) THEN TRUE
       ELSE FALSE
   END AS is_weekend,
   QUARTER(calendar_date) AS quarter
FROM date_dimension
WHERE calendar_date <= '2023-03-31'
ORDER BY calendar_date
LIMIT 10;

व्याख्या: यह क्वेरी:

  1. DATEADD को सीक्वेंस जनरेटर के साथ उपयोग करके 2023 के लिए तिथियों की श्रृंखला बनाती है
  2. प्रत्येक कैलेंडर तिथि के लिए उपयोगी तिथि विशेषताएँ निकालती है
  3. Q1 2023 तक सीमित करती है और संक्षिप्तता के लिए पहली 10 तिथियाँ दिखाती है

आउटपुट:

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

तिथि डाइमेंशन टेबल्स, बार-बार क्वेरी में गणना करने के बजाय तिथि विशेषताएँ पहले से गणना करके, विश्लेषण के प्रदर्शन में उल्लेखनीय सुधार करती हैं। वे किसी संगठन में तिथि-तर्क का मानकीकरण करती हैं, जिससे तिमाहियों, सप्ताहांत और अन्य समय अवधियों की परिभाषाएँ सुसंगत रहती हैं। 

यह तरीका त्रुटियों को कम करता है और जटिल समय-आधारित विश्लेषण को व्यावसायिक उपयोगकर्ताओं के लिए अधिक सुलभ बनाता है। तिथि डाइमेंशन, वर्ष, तिमाही, माह और दिन जैसी विभिन्न समय पदानुक्रमों द्वारा कुशल फ़िल्टरिंग और ग्रुपिंग को भी सक्षम करती हैं।

सीक्वेंस जनरेशन के साथ DATEADD इन डाइमेंशन टेबल्स को बिना मैनुअल डेटा एंट्री के भरने का सरल तरीका प्रदान करता है। 

इस तकनीक का विस्तार करके बहु-वर्षीय कैलेंडर या विशेष समय डाइमेंशन, जैसे वित्तीय कैलेंडर या व्यावसायिक दिवस गणनाएँ, बनाई जा सकती हैं। अतिरिक्त कॉलम में छुट्टी फ़्लैग्स, सप्ताह संख्याएँ, या कस्टम व्यावसायिक अवधि निर्धारण शामिल हो सकते हैं जो सटीक रिपोर्टिंग के लिए महत्वपूर्ण हैं। 

एक बार बन जाने पर, यह डाइमेंशन टेबल फैक्ट टेबल्स के साथ जॉइन होकर डैशबोर्ड और रिपोर्ट में शक्तिशाली समय-बुद्धिमत्ता क्षमताएँ सक्षम कर सकती है।

निर्धारित ईवेंट्स का विश्लेषण

आइए DATEADD का उपयोग आगामी निर्धारित अनुरक्षण ईवेंट्स का विश्लेषण करने के लिए करें:

-- Find upcoming events and calculate preparation time
SELECT
   event_id,
   event_name,
   event_timestamp,
   duration_minutes,
   DATEADD(DAY, -3, event_timestamp) AS preparation_start,
   DATEADD(MINUTE, duration_minutes, event_timestamp) AS event_end,
   DATEDIFF('MINUTE', CURRENT_TIMESTAMP(), event_timestamp) AS minutes_until_event
FROM events
WHERE event_timestamp > CURRENT_TIMESTAMP()
ORDER BY event_timestamp;

व्याख्या: यह क्वेरी:

  1. आगामी ईवेंट्स (भविष्य में होने वाले) खोजती है
  2. तैयारी कब शुरू होनी चाहिए (ईवेंट से 3 दिन पहले) की गणना करती है
  3. अवधि के आधार पर ईवेंट कब समाप्त होगा, यह गणना करती है
  4. ईवेंट शुरू होने तक कितने मिनट शेष हैं, यह दिखाती है

चूँकि हमारा सैंपल डेटा 2023 का है, यह क्वेरी आमतौर पर 2025 में कोई परिणाम नहीं दिखाएगी, लेकिन वैचारिक रूप से निर्धारित ईवेंट्स का विश्लेषण कैसे करें, यह दर्शाती है।

बिलिंग अवधियों की गणना

सदस्यता-आधारित व्यवसायों के लिए, सटीक बिलिंग अवधियों की गणना आवश्यक है:

-- Generate next 6 billing periods for monthly subscriptions
WITH billing_periods AS (
   SELECT
       subscription_id,
       customer_id,
       plan_name,
       start_date,
       seq AS billing_period_number,
       DATEADD(MONTH, seq, start_date) AS billing_period_start,
       DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date)) AS billing_period_end
   FROM subscriptions
   CROSS JOIN (SELECT seq4() AS seq FROM TABLE(GENERATOR(ROWCOUNT => 6)))
   WHERE billing_cycle = 'Monthly'
)
SELECT
   subscription_id,
   customer_id,
   plan_name,
   billing_period_number,
   billing_period_start,
   billing_period_end,
   DATEDIFF('DAY', billing_period_start, billing_period_end) + 1 AS days_in_period
FROM billing_periods
ORDER BY subscription_id, billing_period_number;

व्याख्या: यह क्वेरी:

  1. CROSS JOIN और सीक्वेंस जनरेटर (seq4()) के साथ मासिक सदस्यताओं के अगले 6 बिलिंग अवधियों का जनरेशन करती है
  2. अवधि संख्या के आधार पर महीनों को जोड़कर DATEADD(MONTH, seq, start_date) से शुरूआती तिथि की गणना करती है
  3. अगली अवधि शुरू होने से एक दिन पहले को अंत तिथि के रूप में DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date)) से गणना करती है यह 28/29/30/31 दिनों जैसे भिन्न माह-लंबाइयों को सही ढंग से संभालता है
  4. प्रत्येक बिलिंग अवधि में दिनों की संख्या DATEDIFF('DAY', billing_period_start, billing_period_end) + 1 से गिनती है +1 आवश्यक है क्योंकि DATEDIFF तिथियों के बीच का अंतर लौटाता है, जिसमें अंत तिथि शामिल नहीं होती
  5. WHERE क्लॉज़ के साथ केवल मासिक सदस्यताओं को शामिल करती है
  6. परिणामों को तार्किक प्रस्तुति हेतु subscription_id और बिलिंग अवधि के अनुसार क्रमबद्ध करती है

आउटपुट:

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

ध्यान दें कि DATEADD अलग-अलग माह-लंबाइयों को सही तरीके से संभालता है, जिससे बिलिंग अवधि की गणनाएँ सटीक रहती हैं।

ये उदाहरण दिखाते हैं कि DATEADD को तिथि संशोधन से जुड़ी आम व्यावसायिक समस्याओं को हल करने में कैसे लागू किया जा सकता है। DATEADD को अन्य SQL फ़ंक्शंस के साथ मिलाकर, आप Snowflake में समय-आधारित विश्लेषण और डेटा प्रोसेसिंग के लिए शक्तिशाली क्वेरीज़ बना सकते हैं।

DATEADD की तुलना संबंधित Snowflake फ़ंक्शंस से

अब आइए देखें कि DATEADD फ़ंक्शन Snowflake के कुछ अन्य फ़ंक्शंस की तुलना में कैसा है। 

DATEADD बनाम DATEDIFF और DATE_TRUNC

जहाँ DATEADD किसी तिथि में विशिष्ट समयांतराल जोड़ता या घटाता है, वहीं DATEDIFF दो तिथियों के बीच निर्दिष्ट इकाई में अंतर की गणना करता है। DATEDIFF पूर्ण इकाइयों की संख्या के रूप में एक पूर्णांक लौटाता है, जिससे यह सदस्यता अवधि या ऑर्डर प्लेसमेंट के बाद के दिनों जैसी अवधियों की गणना के लिए आदर्श बनता है। 

DATE_TRUNC इसके विपरीत, किसी दिनांक/समय मान से छोटे तिथि भागों को उनके डिफ़ॉल्ट मानों पर सेट कर परिशुद्धता हटा देता है, प्रभावी रूप से नीचे की ओर किसी निर्दिष्ट इकाई तक राउंड कर देता है।

-- Comparing the three functions
SELECT
   DATEADD(MONTH, 3, '2023-01-15'::DATE) AS added_three_months,
   DATEDIFF(DAY, '2023-01-15'::DATE, '2023-04-15'::DATE) AS days_between,
   DATE_TRUNC(MONTH, '2023-01-15'::DATE) AS truncated_to_month;

आउटपुट:

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

किस फ़ंक्शन का कब उपयोग करें (निर्णय मानदंड)

जब आपको विशिष्ट समयांतराल के अनुसार तिथियों को आगे या पीछे शिफ्ट करना हो—जैसे भविष्य की नवीनीकरण तिथियाँ, डिलीवरी विंडो, या भुगतान अनुसूचियाँ निकालना—तो DATEADD का उपयोग करें। 

दो तिथियों के बीच बीता हुआ समय मापने—जैसे आयु, अवधि, या रिपोर्टिंग के लिए समय-आधारित मीट्रिक्स—के लिए DATEDIFF चुनें।

 DATE_TRUNC तब सबसे उपयुक्त है जब आपको समय अवधियों (दैनिक, मासिक, तिमाही) के आधार पर डेटा को समूहित करना हो, टाइमस्टैम्प्स को समान परिशुद्धता स्तर पर मानकीकृत करना हो, या विश्लेषण के लिए समय-आधारित पदानुक्रम बनाने हों।

-- Function usage by scenario
SELECT
   -- Scenario: Calculate next month's billing date
   DATEADD(MONTH, 1, start_date) AS next_billing_date,
  
   -- Scenario: Find how many days the subscription has been active
   DATEDIFF(DAY, start_date, CURRENT_DATE()) AS subscription_age_days,
  
   -- Scenario: Group by month for analysis
   DATE_TRUNC(MONTH, start_date) AS billing_month
FROM subscriptions
LIMIT 3;

dateadd फ़ंक्शन का उपयोग करने वाली snowflake क्वेरी का परिणाम

एज केस संभालना और ट्रबलशूटिंग

यदि आपको फ़ंक्शन का उपयोग करते समय समस्याएँ आ रही हैं, तो यहाँ कुछ सुझाव हैं जो आपको परेशानी से बाहर निकलने में मदद कर सकते हैं। 

माह-अंत और लीप वर्ष समायोजन

Snowflake DATEADD का उपयोग करते समय माह-अंत तिथियों को बुद्धिमानी से संभालता है। माह-अंत तिथि में महीने जोड़ते समय, Snowflake परिणामी महीने के अंतिम दिन को लौटाता है, चाहे दिनों की संख्या कुछ भी हो। यह व्यवहार विभिन्न लंबाइयों वाले महीनों के बावजूद "माह-अंत" की अवधारणा को संरक्षित करता है।

-- Month-end handling examples
SELECT
   DATEADD(MONTH, 1, '2023-01-31') AS jan_to_feb,   -- January 31 + 1 month = February 28
   DATEADD(MONTH, 1, '2023-02-28') AS feb_to_mar,   -- February 28 + 1 month = March 31
   DATEADD(MONTH, 1, '2024-01-31') AS jan_to_feb_leap, -- January 31 + 1 month in leap year = February 29
   DATEADD(YEAR, 1, '2023-02-28') AS normal_to_leap;   -- February 28, 2023 + 1 year = February 29, 2024

टाइम ज़ोन और डेलाइट सेविंग पर विचार

जब ऐसे टाइमस्टैम्प डेटा के साथ काम करते हैं जिनमें टाइम ज़ोन शामिल है (TIMESTAMP_TZ), DATEADD डेलाइट सेविंग टाइम संक्रमणों को स्वतः ध्यान में रखता है। यह सुनिश्चित करता है कि समय बदलावों के बीच भी गणनाएँ सटीक रहें, लेकिन कभी-कभी DST सीमाओं के आसपास विशिष्ट अंतराल जोड़ते समय अप्रत्याशित परिणाम दे सकता है।

-- Time zone handling with DST transition
SELECT
   event_timestamp,
   DATEADD(HOUR, 24, event_timestamp) AS add_24h,
   DATEADD(DAY, 1, event_timestamp) AS add_1d
FROM (
   SELECT CONVERT_TIMEZONE('America/Los_Angeles', '2023-03-12 01:30:00')::TIMESTAMP_TZ AS event_timestamp
); -- During spring forward DST transition

DST संक्रमणों के आसपास टाइमस्टैम्प्स के साथ काम करते समय, 24 घंटे जोड़ना 1 दिन जोड़ने के बराबर नहीं हो सकता। “add_1d" तरीका आमतौर पर व्यावसायिक अनुप्रयोगों में अधिक सहज परिणाम देता है।

आम त्रुटियाँ और उनके समाधान

DATEADD त्रुटियाँ सामान्यतः टाइप मिसमैच या अमान्य इनपुट से उत्पन्न होती हैं। यहाँ आम समस्याएँ और समाधान हैं:

-- Common error: Invalid date part
-- Error: "Invalid date part 'DATE'"
SELECT DATEADD(DATE, 1, '2023-01-15'); -- Incorrect: 'DATE' is not a valid date part
SELECT DATEADD(DAY, 1, '2023-01-15');  -- Correct: use 'DAY' instead

-- Common error: Type mismatch
-- Error: "Numeric value 'abc' is not recognized"
SELECT DATEADD(DAY, 'abc', '2023-01-15'); -- Incorrect: second parameter must be numeric
SELECT DATEADD(DAY, 10, '2023-01-15');    -- Correct: use numeric value

-- Common error: Invalid date format
-- Error: "Date 'January 15, 2023' is not recognized"
SELECT DATEADD(DAY, 1, 'January 15, 2023'); -- Incorrect: unrecognized date format
SELECT DATEADD(DAY, 1, '2023-01-15');       -- Correct: use YYYY-MM-DD format

प्रदर्शन अनुकूलन सुझाव

बड़े पैमाने के ऑपरेशनों में DATEADD का सर्वोत्तम प्रदर्शन पाने के लिए:

  1. संभव हो तो फ़िल्टरिंग चरणों के बजाय ट्रांसफॉर्मेशन चरणों में DATEADD लागू करें।
  2. जब किसी गणना का कई बार उपयोग हो रहा हो, तो सामान्य तिथि गणनाओं को अस्थायी टेबल्स या CTEs में पूर्व-गणना करें।
  3. रेंज-आधारित गणनाओं से पहले इंडेक्स उपयोग सुधारने हेतु DATE_TRUNC पर विचार करें।
  4. तिथि रेंज बनाने जैसे बैच ऑपरेशनों के लिए, रिकर्सिव CTEs की बजाय सीक्वेंस जनरेटर्स का उपयोग करें (जैसा कि तिथि डाइमेंशन उदाहरण में दिखाया गया है)।
-- Inefficient pattern (calculating same value repeatedly)
SELECT *
FROM large_table
WHERE DATEADD(MONTH, 1, event_date) < CURRENT_DATE();

-- More efficient approach (calculate once)
WITH calc_dates AS (
   SELECT *, DATEADD(MONTH, 1, event_date) AS next_month_date
   FROM large_table
)
SELECT *
FROM calc_dates
WHERE next_month_date < CURRENT_DATE();

इन एज केसों और अनुकूलन तकनीकों को समझने से आप Snowflake में अधिक मजबूत तिथि संशोधन तर्क लिख पाएँगे, सामान्य गलतियों से बचते हुए प्रदर्शन को अधिकतम कर पाएँगे।

निष्कर्ष

Snowflake की DATEADD फ़ंक्शन तिथि संशोधन के लिए एक अनिवार्य टूल है, जो डेटा प्रोफेशनलों को विभिन्न तिथि भागों में समय गणित करने देती है। यह माह-अंत तिथियों, लीप वर्षों, टाइम ज़ोन और डेलाइट सेविंग टाइम संक्रमणों को पूर्वानुमेय व्यवहार के साथ संभालती है। हमने देखा कि DATEADD को सदस्यता प्रबंधन, डिलीवरी ट्रैकिंग, तिथि डाइमेंशन निर्माण और बिलिंग गणनाओं में कैसे लागू किया जा सकता है। जब DATEDIFF और DATE_TRUNC के साथ इस्तेमाल किया जाए, तो यह Snowflake में समय-आधारित एनालिटिक्स का मुख्य घटक बन जाती है।

अधिक Snowflake ज्ञान के लिए, Snowflake Foundations कौशल ट्रैक देखें या Creating Tables in Snowflake एक्सप्लोर करें ताकि आप अपनी डेटा मॉडलिंग कौशल विकसित कर सकें। Using Snowflake Time Travel गाइड आपके टेम्पोरल ऑपरेशन्स की समझ को पूरक करता है। शुरुआती लोग Snowflake Tutorial for Beginners से शुरुआत करें।

Snowflake DATEADD FAQs

Snowflake DATEADD फ़ंक्शन का उपयोग किस लिए किया जाता है?

Snowflake की DATEADD फ़ंक्शन का उपयोग तिथि गणितीय क्रियाओं के लिए किया जाता है—तिथि, समय, या टाइमस्टैम्प मानों में विशिष्ट समयांतराल (जैसे दिन, महीने, या वर्ष) जोड़ने या घटाने हेतु। यह सामान्यतः भविष्य की तिथियाँ निकालने, सदस्यता नवीनीकरण की गणना, और टाइम-सीरीज़ विश्लेषण के लिए उपयोग होती है।

DATEADD माह-अंत तिथियों और लीप वर्षों को कैसे संभालती है?

DATEADD माह-अंत तिथियों को "माह-अंत" की अवधारणा को संरक्षित करके बुद्धिमानी से संभालती है। माह-अंत तिथि में महीने जोड़ते समय, यह परिणामी महीने के अंतिम दिन को लौटाती है। लीप वर्षों के लिए, यह तिथियों को स्वतः समायोजित करती है (उदाहरण: 28 फ़रवरी, 2023 में एक वर्ष जोड़ने पर 29 फ़रवरी, 2024 प्राप्त होता है)।

DATEADD में समर्थित तिथि भाग कौन-कौन से हैं?

DATEADD कई तिथि भागों का समर्थन करती है, जिनमें YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND, और CENTURY शामिल हैं। प्रत्येक तिथि भाग आपको किसी तिथि मान से उसी विशिष्ट समय इकाई को जोड़ने या घटाने की अनुमति देता है।

क्या DATEADD अलग-अलग टाइमस्टैम्प प्रकारों के साथ उपयोग की जा सकती है?

हाँ, DATEADD Snowflake के सभी टाइमस्टैम्प प्रकारों के साथ काम करती है: TIMESTAMP_NTZ (टाइम ज़ोन नहीं), TIMESTAMP_TZ (टाइम ज़ोन सहित), और TIMESTAMP_LTZ (लोकल टाइम ज़ोन)। यह टाइमस्टैम्प प्रकार को संरक्षित रखती है और टाइम ज़ोन रूपांतरणों को स्वतः संभालती है।

DATEADD, DATEDIFF और DATE_TRUNC से कैसे भिन्न है?

जहाँ DATEADD समयांतराल जोड़/घटा कर तिथियों को संशोधित करती है, वहीं DATEDIFF दो तिथियों के बीच निर्दिष्ट इकाई में अंतर की गणना करता है, और DATE_TRUNC किसी दिनांक/समय मान से परिशुद्धता हटाकर उसे निर्दिष्ट इकाई तक नीचे की ओर राउंड करता है। ये तिथि संशोधन में अलग लेकिन परस्पर पूरक उद्देश्यों की पूर्ति करते हैं।


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

मैं 2 से अधिक वर्षों के अनुभव वाला डेटा साइंस कंटेंट क्रिएटर हूँ और Medium पर सबसे बड़े फॉलोइंग्स में से एक रखता हूँ। मुझे एआई और एमएल पर विस्तार से लेख लिखना पसंद है, जिसमें हल्का-सा व्यंग्यात्मक अंदाज रहता है—क्योंकि कुछ तो करना पड़ता है ताकि वे कम उबाऊ लगें। मैंने 130 से अधिक लेख और एक DataCamp कोर्स तैयार किया है, और एक और बन रहा है। मेरा कंटेंट 50 लाख से अधिक लोगों ने देखा है, जिनमें से 20 हज़ार लोग Medium और LinkedIn पर फॉलोअर्स बन गए। 

विषय
Snowflake
Cloud

टॉप DataCamp कोर्सेज़

लर्निंग पाथ

Snowflake फ़ाउंडेशन्स

7 घंटा
Snowflake के साथ व्यावहारिक अनुभव प्राप्त करें! डेटा इंजीनियरों, विश्लेषकों और BI पेशेवरों के लिए इस इंटरैक्टिव परिचय में डेटा को क्वेरी करना, मॉडल करना और प्रबंधित करना सीखें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

लर्निंग पाथ

एसोसिएट डेटा इंजीनियर में Snowflake

32 घंटा
Snowflake में डिज़ाइन, क्वेरी और निर्माण करना सीखें - ट्रांसफ़ॉर्मेशन और मॉडलिंग के लिए Snowflake SQL में महारत हासिल करके नौकरी के लिए तैयार Data Engineer बनें।
और देखेंRight Arrow