तिथि और समय फंक्शन

Redshift परिचय

Jason Myers

Principal Architect

मौजूदा तिथि और समय लेना

  • ट्रांजैक्शन शुरू होते समय की तिथि-समय: SYSDATE
-- मौजूदा तिथि और समय लें
SELECT SYSDATE;
timestamp
============================
2024-01-27 20:05:55.976353
  • स्टेटमेंट शुरू होते समय की तिथि-समय: GETDATE(); कोष्ठक जरूरी
-- मौजूदा तिथि और समय लें
SELECT GETDATE();
timestamp
============================
2024-01-27 20:06:55.976353
Redshift परिचय

तिथि-समय फंक्शन का व्यवहार

सिर्फ़ लीडर नोड पर चलने वाले फंक्शन से सावधान!

  • AGE की जगह DATEDIFF
  • लीडर-विशिष्ट फंक्शन की जगह GETDATE/SYSDATE:
    • CURRENT_TIME
    • CURRENT_TIMESTAMP
    • ISFINITE
    • LOCALTIME
    • LOCALTIMESTAMP
    • NOW
Redshift परिचय

तिथि और समय ट्रंक करना

  • TRUNC टाइमस्टैम्प से डेट लौटाता है
-- मौजूदा तिथि लें, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT TRUNC(SYSDATE);
2024-01-27
  • DATE_TRUNC('datepart', timestamp) दिए गए datepart (जैसे hour/day) तक ट्रंक करता है
-- घंटे तक ट्रंक करें, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT DATE_TRUNC('minute', SYSDATE);
2024-01-27 20:05:55
1 https://docs.aws.amazon.com/redshift/latest/dg/r_Dateparts_for_datetime_functions.html
Redshift परिचय

तिथि/टाइमस्टैम्प के पार्ट निकालना

  • DATE_PART(datepart, date or timestamp)
    • किसी date या timestamp से माँगा गया पार्ट निकालता है
-- मौजूदा महीना लें, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT DATE_PART(month, SYSDATE);
1
  • सिर्फ़ month, day, year ही नहीं लौटा सकता
    • उदाहरण: dayofweek, quarter, timezone
-- हफ्ते का दिन लें, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT DATE_PART(dayofweek, SYSDATE);
6
Redshift परिचय

तिथियों और समय की तुलना

  • DATE_CMP(date_1, date_2) सापेक्ष तुलना

    • date_1 पहले हो तो -1 लौटाता है
    • बराबर हों तो 0 लौटाता है
    • date_1 बाद में हो तो 1 लौटाता है
  • टाइप-विशिष्ट फंक्शन

    • DATE_CMP_TIMESTAMP
    • DATE_CMP_TIMESTAMPTZ
    • TIMESTAMP_CMP
    • TIMESTAMP_CMP_TIMESTAMPTZ
    • TIMESTAMPTZ_CMP
-- टेबल की 5 तिथियों की तुलना, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
  SELECT date_col, 
         TRUNC(SYSDATE) AS current_date,
         DATE_CMP(date_col, SYSDATE)
    FROM combined_history_projections
ORDER BY date_col
   LIMIT 3;
 date_col  |  current_date | date_cmp
===========|===============|==========
2024-01-26 | 2024-01-27    |       -1
2024-01-27 | 2024-01-27    |        0
2024-01-28 | 2024-01-27    |        1
Redshift परिचय

अंतर निकालना

  • DATEDIFF(datepart, value_1, value_2)
  • किसी भी ओर date, time, timetz, या timestamp सपोर्ट करता है
    • निर्दिष्ट datepart होना चाहिए
  • रिटर्न
    • value_2 पहले हो तो निगेटिव
    • बराबर हों तो 0
    • value_2 बाद में हो तो पॉजिटिव
Redshift परिचय

DATEDIFF का उपयोग

-- पहली तिमाही के अंत तक के दिन, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT DATEDIFF(day,TRUNC(SYSDATE),'2024-03-31') AS days_diff;
days_diff
===========
64
Redshift परिचय

तिथि और समय बढ़ाना

  • DATEADD(datepart, quantity, value)
  • date, time, timetz, या timestamp सपोर्ट करता है
  • घटाने के लिए quantity निगेटिव हो सकती है
-- एक सप्ताह जोड़ें, आधार:
-- SYSDATE of 2024-01-27 20:05:55.976353
SELECT TRUNC(SYSDATE) AS todays_date,
       TRUNC(DATEADD(week, 1, SYSDATE)) AS next_weeks_date;
todays_date | next_weeks_date
============|==================
2024-01-27  | 2024-02-03
Redshift परिचय

तिथि-समय बढ़ाते समय सावधानियाँ

  • लीप वर्ष में महीनों से जोड़ने पर महीने के अंत की तिथि मिलती है
-- किसी तिथि में महीने के हिसाब से वर्ष जोड़ें
SELECT DATEADD(month, 12, '2024-02-29');
2025-02-28 00:00:00
  • लीप वर्ष में वर्षों से जोड़ने पर अगला दिन मिलता है
-- किसी तिथि में वर्ष के हिसाब से वर्ष जोड़ें
SELECT DATEADD(year, 1, '2024-02-29');
2025-03-01 00:00:00
Redshift परिचय

अभ्यास करते हैं!

Redshift परिचय

Preparing Video For Download...