DATE Functions (SYSDATE, SYSTIMESTAMP, TO_CHAR, TRUNC, ROUND, NEXT_DAY, LAST_DAY, MONTHS_BETWEEN, ADD_MONTHS)

Date functions database management के शल्य-चिकित्सा औज़ार हैं, आपको timelines को काटने, खिसकाने, और गणना करने देते हुए ताकि library overdue fines से लेकर student semester milestones तक सब कुछ track करें।

12 min read · 12 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

घड़ी टिक-टिक कर रही है

अपने university library database की कल्पना कीजिए। आपको एक किताब देर से लौटाने वाले student के लिए बिल्कुल fine calculate करना है, तय करना है कि कौन से students बिल्कुल छह महीने में graduate होंगे, या एक raw timestamp को एक पढ़ने-लायक़ 'DD-MON-YYYY' report में format करना है। अगर आप dates को सरल strings या integers की तरह मानते हैं, आप leap years, बदलती month lengths, और time-of-day offsets का हिसाब रखने में विफल होंगे। एक database engine समय को इतनी बुद्धिमानी से कैसे manipulate करता है कि January 31 में 'एक महीना' जोड़ने का परिणाम एक invalid date के बजाय February 28 (या 29) आए?

Theory

घड़ी बनाम Calendar Sheet

SYSDATE को अपनी wristwatch की तरह सोचिए, अभी बिल्कुल समय दिखाते हुए। TRUNC और ROUND जैसे functions उस watch को adjust करने जैसे हैं: TRUNC watch को दिन की शुरुआत पर 'lock' करने जैसा है (hours/minutes को नज़रअंदाज़ करते हुए), जबकि ROUND सुई को नज़दीकी घंटे या महीने पर धकेलने जैसा है। Date functions आपको समय manipulate करने की शक्ति देते हैं, इसे आगे, पीछे खिसकाते हुए, या seconds और milliseconds की ग़ैर-ज़रूरी precision काटते हुए।

Theory

ज़रूरी Date Function शस्त्रागार

Oracle SQL में, date manipulation एक standard internal 7-byte representation पर बनी है। function library पर महारत आपको अंतर्निहित calendar जटिलता की चिंता किए बिना जटिल arithmetic करने देती है।

At a glance

Table 1: BCA laboratory assignments के लिए आम Oracle Date Functions।

FunctionPurposeUsage Example
SYSDATEमौजूदा system date और time return करता है।SELECT SYSDATE FROM DUAL;
SYSTIMESTAMPमौजूदा date, time, और fractional seconds/time zone return करता है।SELECT SYSTIMESTAMP FROM DUAL;
ADD_MONTHS(d, n)date d में n महीने जोड़ता है।ADD_MONTHS(SYSDATE, 1)
MONTHS_BETWEEN(d1, d2)दो dates के बीच महीने return करता है।MONTHS_BETWEEN(d1, d2)
TRUNC(d, fmt)date को unit की शुरुआत तक काटता है।TRUNC(SYSDATE, 'MM')
NEXT_DAY(d, day)अगला निर्दिष्ट weekday खोजता है।NEXT_DAY(SYSDATE, 'FRIDAY')

Theory

Worked Example: Overdue Fine Calculator

आइए calculate करें कि एक student ने अपनी library book return date कितने दिन पार की, और तय करें उनकी नई deadline अगर हम उन्हें एक-महीने का extension देते हैं।

Practical

Library Deadline Logic

-- Assume book_due_date is a column in our 'loans' table
-- 1. Calculate how many months past due
SELECT 
    student_id, 
    TRUNC(MONTHS_BETWEEN(SYSDATE, book_due_date)) AS months_late,
    ADD_MONTHS(book_due_date, 1) AS extended_deadline
FROM loans
WHERE SYSDATE > book_due_date;

Copy करके Oracle FreeSQL खोलें
Oracle FreeSQL, Oracle SQL का मुफ़्त online editor है। Code पहले copy हो जाता है: उसे वहां paste करके Run करें।

Think first

ROUND बनाम TRUNC जाल

अगर आज July 15th, 2026 है, TRUNC(SYSDATE, 'MM') और ROUND(SYSDATE, 'MM') का परिणाम क्या होगा?

Show the answer

दोनों July 1st, 2026 return करेंगे, और यही इस ट्रैप का असली point है। TRUNC(SYSDATE, 'MM') हमेशा महीने की शुरुआत तक पीछे काटता है, तो यह July 1st देता है। ROUND(SYSDATE, 'MM') सबसे नज़दीकी महीने की सीमा तक round करता है, और Oracle महीने की 16th तारीख़ से ही ऊपर round करता है। क्योंकि 15th उस cutoff से ठीक पहले पड़ती है, ROUND भी July 1st पर ही आता है। अगर तारीख़ July 16th होती, तो ROUND आगे बढ़कर August 1st पर जाता जबकि TRUNC July 1st पर ही रहता।

Quiz

कौन सा function ख़ास तौर पर एक दी गई date से पूरे महीने जोड़ने या घटाने के लिए design किया गया है जबकि अलग month lengths और leap years अपने-आप सँभालता है?

  1. SYSDATE + 30
  2. ADD_MONTHS
  3. MONTHS_BETWEEN
  4. TO_DATE_ADD
Show the answer

ADD_MONTHS

ADD_MONTHS एकमात्र function है जो महीनों की बदलती lengths और leap years को सही ढंग से सँभालता है। '+ 30' जैसा सरल arithmetic बस 30 दिन जोड़ता है, जो आपको महीने के इच्छित दिन से अलग एक दिन पर उतार सकता है।

Quiz

SYSDATE और SYSTIMESTAMP के बीच मुख्य अंतर क्या है?

  1. SYSDATE time zone info शामिल करता है, SYSTIMESTAMP नहीं।
  2. SYSDATE केवल dates के लिए है; SYSTIMESTAMP fractional seconds और time zone info शामिल करता है।
  3. वे Oracle में समान हैं।
  4. SYSTIMESTAMP केवल Oracle के पुराने versions के लिए है।
Show the answer

SYSDATE केवल dates के लिए है; SYSTIMESTAMP fractional seconds और time zone info शामिल करता है।

SYSTIMESTAMP बहुत ज़्यादा precision देता है, fractional seconds और time zone offsets पकड़ते हुए, जो transaction logging और performance auditing के लिए अहम है।

Watch out

Classic जाल: Date Format Strings

TO_CHAR(date, 'format') इस्तेमाल करते समय, याद रखिए कि 'mm' महीनों के लिए है और 'mi' minutes के लिए! semester exams में एक आम error TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MM:SS') लिखना है, यह minute position में month code दोहराने में परिणत होगा। minutes के लिए हमेशा 'MI' इस्तेमाल कीजिए!

Theory

Date Functions को Semester 3 से जोड़ना

date arithmetic समझना Semester 3 के Business Intelligence modules की बुनियाद है। आप आख़िरकार इन्हीं functions का इस्तेमाल 'Year-over-Year' या 'Quarter-to-Date' analytical reports बनाने के लिए करेंगे, जहाँ date boundaries manipulate करना एक रोज़मर्रा की ज़रूरत है।

Summary

Key takeaways

  • SYSDATE मौजूदा server date/time देता है; SYSTIMESTAMP precision और time zone data जोड़ता है।
  • TRUNC एक date को निर्दिष्ट unit की शुरुआत तक lock करता है (जैसे month, year)।
  • ROUND एक date को नज़दीकी unit boundary तक ले जाता है (ऊपर या नीचे)।
  • ADD_MONTHS month-based date arithmetic करने का सबसे सुरक्षित तरीक़ा है।
  • 'MM' (month) टकराव से बचने के लिए formatting में minutes के लिए हमेशा 'MI' इस्तेमाल कीजिए।
  • Memory Hook: ADD_MONTHS आपके लिए calendar math सँभालता है, अगर बच सकें तो कभी हाथ से numbers मत जोड़िए!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Advanced SQL

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati