MySQL वर्तमान समय गाइड: NOW(), CURRENT_TIMESTAMP, DATE_FORMAT, टाइम ज़ोन सेटिंग्स & सर्वोत्तम प्रथाएँ

目次

1. परिचय

MySQL में वर्तमान समय को संभालने की आवश्यकता कब होती है?

MySQL में, वर्तमान समय को प्राप्त करना कई विभिन्न परिदृश्यों में आवश्यक होता है। उदाहरण के लिए, निम्नलिखित उपयोग मामलों में यह सामान्य है:

  • डेटा पंजीकरण करते समय स्वचालित रूप से टाइमस्टैम्प डालना
  • उदाहरण के तौर पर, ऑर्डर डेटा या लॉग डेटा सहेजते समय निर्माण तिथि और समय को रिकॉर्ड करना।
  • वर्तमान समय के आधार पर डेटा को फ़िल्टर करना
  • उदाहरण के तौर पर, पिछले 7 दिनों का डेटा केवल प्राप्त करना या भविष्य की तिथियों वाले रिकॉर्ड खोजना।
  • प्रदर्शन के लिए तिथियों और समय को फ़ॉर्मेट करना
  • रिपोर्ट जनरेट करते समय बेहतर पठनीयता के लिए तिथि और समय मानों को फ़ॉर्मेट करना।
  • वर्तमान समय का उपयोग करके डेटा समाप्ति प्रबंधन करना
  • उदाहरण के तौर पर, कूपन अभी भी वैध है या नहीं, इसे वर्तमान समय से तुलना करके निर्धारित करना।

जैसा कि आप देख सकते हैं, MySQL में वर्तमान समय को सही ढंग से प्राप्त करना और उसे संचालित करना डेटाबेस प्रबंधन में एक महत्वपूर्ण कौशल है।

इस लेख में आप क्या सीखेंगे

यह लेख निम्नलिखित विषयों को विस्तार से समझाता है:

  • MySQL में वर्तमान समय को कैसे प्राप्त करें (NOW(), CURRENT_TIMESTAMP, आदि)
  • तिथि और समय फ़ॉर्मेट को कैसे बदलें (DATE_FORMAT() का उपयोग करके)
  • वर्तमान समय का उपयोग करके तिथि और समय गणनाएँ (INTERVAL का उपयोग करके)
  • समय क्षेत्र को कैसे बदलें (SET SESSION time_zone)
  • वर्तमान समय को डिफ़ॉल्ट मान के रूप में उपयोग करना (CURRENT_TIMESTAMP)
  • सामान्य त्रुटियाँ और उन्हें कैसे ठीक करें (FAQ)

MySQL में “वर्तमान समय” को संभालने के बुनियादी से उन्नत उपयोग तक, यह गाइड व्यावहारिक SQL उदाहरण प्रदान करता है। अंत तक पढ़ना न भूलें।

2. MySQL में वर्तमान समय को कैसे प्राप्त करें

MySQL में वर्तमान समय को प्राप्त करने के फ़ंक्शन की सूची

MySQL कई फ़ंक्शन प्रदान करता है जो वर्तमान समय को प्राप्त करते हैं। अंतर समझें और उन्हें उपयुक्त रूप से उपयोग करें।

FunctionReturnsExample
NOW()Current date and time (date + time)SELECT NOW();2025-02-11 16:00:00
CURRENT_TIMESTAMPSame as NOW() (SQL standard)SELECT CURRENT_TIMESTAMP;
CURDATE()Current date onlySELECT CURDATE();2025-02-11
CURTIME()Current time onlySELECT CURTIME();16:00:00

NOW() फ़ंक्शन

NOW() MySQL में वर्तमान समय को प्राप्त करने के लिए सबसे अधिक उपयोग किया जाने वाला फ़ंक्शन है।
यह तिथि और समय दोनों को लौटाता है।

SELECT NOW();

आउटपुट उदाहरण:

2025-02-11 16:00:00
  • NOW() वर्तमान सिस्टम समय को लौटाता है।
  • क्योंकि यह समय क्षेत्र से प्रभावित होता है, प्रदर्शित समय आपके पर्यावरण के अनुसार अलग हो सकता है (विस्तार से “समय क्षेत्र सेटिंग्स” अनुभाग में बताया गया है)।

CURRENT_TIMESTAMP का उपयोग कैसे करें

CURRENT_TIMESTAMP लगभग NOW() के समान व्यवहार करता है। यह SQL मानक के अनुरूप है और अन्य डेटाबेस में भी उपयोग किया जा सकता है।

SELECT CURRENT_TIMESTAMP;

आउटपुट उदाहरण:

2025-02-11 16:00:00

CURDATE() के साथ केवल तिथि प्राप्त करें

CURDATE() का उपयोग तब किया जाता है जब आप केवल वर्तमान तिथि (वर्ष, माह, दिन) प्राप्त करना चाहते हैं।

SELECT CURDATE();

आउटपुट उदाहरण:

2025-02-11

CURTIME() के साथ केवल समय प्राप्त करें

यदि आप केवल वर्तमान समय (घंटा, मिनट, सेकंड) प्राप्त करना चाहते हैं, तो CURTIME() का उपयोग करें।

SELECT CURTIME();

आउटपुट उदाहरण:

16:00:00

आपको कौन सा फ़ंक्शन उपयोग करना चाहिए?

PurposeRecommended Function
Retrieve both date and timeNOW() or CURRENT_TIMESTAMP
Retrieve date onlyCURDATE()
Retrieve time onlyCURTIME()

3. MySQL में वर्तमान समय को कैसे फ़ॉर्मेट करें

DATE_FORMAT() के साथ कस्टम फ़ॉर्मेटिंग

DATE_FORMAT() की मूल सिंटैक्स

MySQL में, आप DATE_FORMAT() फ़ंक्शन का उपयोग करके तिथियों और समयों के फ़ॉर्मेट को स्वतंत्र रूप से बदल सकते हैं।

SELECT DATE_FORMAT(datetime_value, 'format_specifiers');

उदाहरण: NOW() को YYYY/MM/DD HH:MM फ़ॉर्मेट में बदलना

SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i');

आउटपुट:

2025/02/11 16:45

सामान्य फ़ॉर्मेट स्पेसिफ़ायर्स की सूची

SpecifierMeaningExample (2025-02-11 16:45:30)
%Y4-digit year2025
%m2-digit month (01-12)02
%d2-digit day (01-31)11
%HHour (00-23, 24-hour format)16
%iMinutes (00-59)45
%sSeconds (00-59)30

TIME() के साथ केवल समय भाग निकालें

यदि आप NOW() द्वारा लौटाए गए datetime से केवल समय भाग निकालना चाहते हैं, तो TIME() फ़ंक्शन का उपयोग करें।

SELECT TIME(NOW());

आउटपुट:

16:45:30

YEAR(), MONTH(), और DAY() के साथ भाग निकालें

केवल विशिष्ट भाग निकालने के लिए, निम्नलिखित फ़ंक्शन का उपयोग करें।

FunctionReturnsSQLOutput Example (2025-02-11 16:45:30)
YEAR()YearSELECT YEAR(NOW());2025
MONTH()MonthSELECT MONTH(NOW());2
DAY()DaySELECT DAY(NOW());11

फ़ॉर्मेटिंग के व्यावहारिक उदाहरण

निम्नलिखित SQL विभिन्न स्वरूपों को व्यावहारिक रूप से आज़माने के लिए उपयोगी है।

SELECT 
    NOW() AS 'Original datetime',
    DATE_FORMAT(NOW(), '%Y/%m/%d') AS 'YYYY/MM/DD format',
    DATE_FORMAT(NOW(), '%H:%i:%s') AS 'HH:MM:SS',
    TIME(NOW()) AS 'Time only',
    YEAR(NOW()) AS 'Year',
    MONTH(NOW()) AS 'Month',
    DAY(NOW()) AS 'Day';

4. MySQL में वर्तमान समय का उपयोग करके तिथि/समय गणनाएँ

INTERVAL के साथ जोड़/घटाव

मूल सिंटैक्स

SELECT current_datetime + INTERVAL number unit;
SELECT current_datetime - INTERVAL number unit;

NOW() के आधार पर समय जोड़ें

उदाहरण के लिए, datetime “एक सप्ताह बाद” प्राप्त करने के लिए:

SELECT NOW() + INTERVAL 7 DAY;

आउटपुट उदाहरण:

2025-02-18 16:30:00
UnitMeaningExample
SECONDSecondsNOW() + INTERVAL 10 SECOND
MINUTEMinutesNOW() + INTERVAL 5 MINUTE
HOURHoursNOW() + INTERVAL 2 HOUR
DAYDaysNOW() + INTERVAL 10 DAY
MONTHMonthsNOW() + INTERVAL 3 MONTH

DATEDIFF() के साथ दो तिथियों के बीच अंतर की गणना करें

SELECT DATEDIFF(NOW(), '2025-01-01');

आउटपुट उदाहरण:

30

BETWEEN के साथ तिथि सीमा द्वारा फ़िल्टर करें

SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';

5. MySQL टाइम ज़ोन सेटिंग्स

वर्तमान टाइम ज़ोन जांचें

SHOW VARIABLES LIKE '%time_zone%';

आउटपुट उदाहरण:

+------------------+----------------+
| Variable_name    | Value          |
+------------------+----------------+
| system_time_zone | UTC            |
| time_zone        | SYSTEM         |
+------------------+----------------+

सत्र के अनुसार टाइम ज़ोन बदलें

SET SESSION time_zone = 'Asia/Tokyo';

सर्वर का डिफ़ॉल्ट टाइम ज़ोन बदलें

कॉन्फ़िगरेशन फ़ाइल (my.cnf) में निम्नलिखित जोड़ें:

[mysqld]
default_time_zone = 'Asia/Tokyo'

UTC_TIMESTAMP के साथ UTC समय प्राप्त करें

SELECT UTC_TIMESTAMP();

CONVERT_TZ() के साथ स्थानीय समय में परिवर्तित करें

SELECT CONVERT_TZ(UTC_TIMESTAMP(), 'UTC', 'Asia/Tokyo');

6. MySQL में वर्तमान समय को डिफ़ॉल्ट मान के रूप में सेट करने का तरीका

CURRENT_TIMESTAMP को डिफ़ॉल्ट मान के रूप में सेट करें

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

ON UPDATE CURRENT_TIMESTAMP के साथ स्वचालित अपडेट

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

DATETIME और TIMESTAMP के बीच अंतर

TypeAffected by Time ZoneCan Set CURRENT_TIMESTAMP as Default
TIMESTAMPYesYes
DATETIMENoNo

क्यों आप NOW() को डिफ़ॉल्ट मान के रूप में उपयोग नहीं कर सकते और समाधान

ERROR 1067 (42000): Invalid default value for 'created_at'

समाधान:

CREATE TRIGGER set_created_at
BEFORE INSERT ON logs
FOR EACH ROW
SET NEW.created_at = NOW();

7. सामान्य MySQL त्रुटियाँ और समाधान (FAQ)

NOW() को डिफ़ॉल्ट मान के रूप में उपयोग नहीं कर सकते

त्रुटि उदाहरण

CREATE TABLE logs (
    created_at DATETIME DEFAULT NOW()
);
ERROR 1067 (42000): Invalid default value for 'created_at'

समाधान

CREATE TABLE logs (
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CURRENT_TIMESTAMP समय गलत है

SHOW VARIABLES LIKE 'time_zone';

समाधान

SET SESSION time_zone = 'Asia/Tokyo';

NOW() परिणाम एक घंटे से ऑफ़ है

SHOW VARIABLES LIKE 'system_time_zone';

समाधान

SET GLOBAL time_zone = 'Asia/Tokyo';

BETWEEN रेंज फ़िल्टरिंग अपेक्षित रूप से काम नहीं करती

SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01' AND '2025-02-28';

समाधान

SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';

8. MySQL में वर्तमान समय को संभालने के सर्वोत्तम अभ्यास

कब NOW() बनाम CURRENT_TIMESTAMP का उपयोग करें

Use CaseRecommended
Retrieve the current time in a SELECT statementNOW()
Automatically set the current time during INSERTCURRENT_TIMESTAMP
Set as the default value of a TIMESTAMP columnCURRENT_TIMESTAMP

कब TIMESTAMP बनाम DATETIME का उपयोग करें

Data TypeAffected by Time ZoneStorage Size
TIMESTAMPYes4 bytes
DATETIMENo8 bytes

UTC में संग्रहित करें और स्थानीय समय में परिवर्तित करें

SELECT CONVERT_TZ(event_time, 'UTC', 'Asia/Tokyo');

>= और < का उपयोग BETWEEN के बजाय करें

SELECT * FROM orders
WHERE created_at >= '2025-02-01 00:00:00' 
AND created_at < '2025-03-01 00:00:00';

INTERVAL के उपयोग को मानकीकृत करें

SELECT NOW() + INTERVAL 1 DAY;

पुराने डेटा को सही ढंग से साफ़ करें

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 1 YEAR LIMIT 1000;