- 1 1. परिचय
- 2 2. MySQL में वर्तमान समय को कैसे प्राप्त करें
- 3 3. MySQL में वर्तमान समय को कैसे फ़ॉर्मेट करें
- 4 4. MySQL में वर्तमान समय का उपयोग करके तिथि/समय गणनाएँ
- 5 5. MySQL टाइम ज़ोन सेटिंग्स
- 6 6. MySQL में वर्तमान समय को डिफ़ॉल्ट मान के रूप में सेट करने का तरीका
- 7 7. सामान्य MySQL त्रुटियाँ और समाधान (FAQ)
- 8 8. MySQL में वर्तमान समय को संभालने के सर्वोत्तम अभ्यास
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 कई फ़ंक्शन प्रदान करता है जो वर्तमान समय को प्राप्त करते हैं। अंतर समझें और उन्हें उपयुक्त रूप से उपयोग करें।
| Function | Returns | Example |
|---|---|---|
NOW() | Current date and time (date + time) | SELECT NOW(); → 2025-02-11 16:00:00 |
CURRENT_TIMESTAMP | Same as NOW() (SQL standard) | SELECT CURRENT_TIMESTAMP; |
CURDATE() | Current date only | SELECT CURDATE(); → 2025-02-11 |
CURTIME() | Current time only | SELECT 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
आपको कौन सा फ़ंक्शन उपयोग करना चाहिए?
| Purpose | Recommended Function |
|---|---|
| Retrieve both date and time | NOW() or CURRENT_TIMESTAMP |
| Retrieve date only | CURDATE() |
| Retrieve time only | CURTIME() |
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
सामान्य फ़ॉर्मेट स्पेसिफ़ायर्स की सूची
| Specifier | Meaning | Example (2025-02-11 16:45:30) |
|---|---|---|
%Y | 4-digit year | 2025 |
%m | 2-digit month (01-12) | 02 |
%d | 2-digit day (01-31) | 11 |
%H | Hour (00-23, 24-hour format) | 16 |
%i | Minutes (00-59) | 45 |
%s | Seconds (00-59) | 30 |
TIME() के साथ केवल समय भाग निकालें
यदि आप NOW() द्वारा लौटाए गए datetime से केवल समय भाग निकालना चाहते हैं, तो TIME() फ़ंक्शन का उपयोग करें।
SELECT TIME(NOW());
आउटपुट:
16:45:30
YEAR(), MONTH(), और DAY() के साथ भाग निकालें
केवल विशिष्ट भाग निकालने के लिए, निम्नलिखित फ़ंक्शन का उपयोग करें।
| Function | Returns | SQL | Output Example (2025-02-11 16:45:30) |
|---|---|---|---|
YEAR() | Year | SELECT YEAR(NOW()); | 2025 |
MONTH() | Month | SELECT MONTH(NOW()); | 2 |
DAY() | Day | SELECT 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
| Unit | Meaning | Example |
|---|---|---|
| SECOND | Seconds | NOW() + INTERVAL 10 SECOND |
| MINUTE | Minutes | NOW() + INTERVAL 5 MINUTE |
| HOUR | Hours | NOW() + INTERVAL 2 HOUR |
| DAY | Days | NOW() + INTERVAL 10 DAY |
| MONTH | Months | NOW() + 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 के बीच अंतर
| Type | Affected by Time Zone | Can Set CURRENT_TIMESTAMP as Default |
|---|---|---|
TIMESTAMP | Yes | Yes |
DATETIME | No | No |
क्यों आप 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 Case | Recommended |
|---|---|
Retrieve the current time in a SELECT statement | NOW() |
Automatically set the current time during INSERT | CURRENT_TIMESTAMP |
Set as the default value of a TIMESTAMP column | CURRENT_TIMESTAMP |
कब TIMESTAMP बनाम DATETIME का उपयोग करें
| Data Type | Affected by Time Zone | Storage Size |
|---|---|---|
TIMESTAMP | Yes | 4 bytes |
DATETIME | No | 8 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;


