मारियाडीबी में, TIMESTAMPDIFF()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो दो दिनांक या डेटाटाइम अभिव्यक्तियों के बीच का अंतर देता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
जहां unit
निम्नलिखित मानों में से एक है:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
इकाइयों में वैकल्पिक रूप से SQL_TSI_
. का उपसर्ग हो सकता है ।
TIMESTAMPDIFF()
रिटर्न datetime_expr2
- datetime_expr1
।
एक एक्सप्रेशन एक तारीख और दूसरा एक डेटाइम हो सकता है। दिनांक मानों को 00:00:00
. के समय भाग के रूप में माना जाता है जहां आवश्यक हो।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');
परिणाम:
+------------------------------------------ --+| टाइमस्टैम्पडिफ(दिन, '2030-02-01', '2030-03-01') |+---------------------------- ------------------------+| 28 |+-------------------------------------------------------- -+
नकारात्मक परिणाम
तिथियों को बदलने से नकारात्मक परिणाम मिलते हैं:
SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');
परिणाम:
+------------------------------------------ --+| टाइमस्टैम्पडिफ(दिन, '2030-03-01', '2030-02-01') |+---------------------------- ------------------------+| -28 | --+
डेटाटाइम मान
डेटाटाइम मान पास करने का एक उदाहरण यहां दिया गया है:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01 00:00:00',
'2030-02-01 12:30:45'
)
AS Result;
परिणाम:
+----------+| परिणाम |+-----------+| 12 |+----------+
मैंने HOUR
specified निर्दिष्ट किया है , और इसलिए यह मिनट और सेकंड के हिस्से को अनदेखा कर देता है।
मिश्रित प्रकार
यहां दिनांक और डेटाटाइम मान दोनों को पास करने का एक उदाहरण दिया गया है:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01',
'2030-02-01 12:30:45'
)
AS Result;
परिणाम:
+----------+| परिणाम |+-----------+| 12 |+----------+
जैसा कि उल्लेख किया गया है, दिनांक मानों को 00:00:00
. के समय भाग के रूप में माना जाता है ।
एक SQL_TSI_
जोड़ना उपसर्ग
इकाई में एक SQL_TSI_
शामिल हो सकता है यदि आवश्यक हो तो उपसर्ग:
SELECT TIMESTAMPDIFF(
SQL_TSI_YEAR,
'2030-02-01',
'2035-02-01'
)
AS Result;
परिणाम:
+----------+| परिणाम |+-----------+| 5 |+----------+
माइक्रोसेकंड
यहां एक उदाहरण दिया गया है जो माइक्रोसेकंड लौटाता है:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45.000000',
'2030-02-01 10:30:45.123456'
)
AS Result;
परिणाम:
+----------+| परिणाम |+-----------+| 123456 |+----------+
यहाँ एक है जहाँ माइक्रोसेकंड वास्तव में डेटाटाइम मानों में निर्दिष्ट नहीं हैं:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45',
'2030-02-01 12:30:45'
)
AS Result;
परिणाम:
+---------------+| परिणाम |+---------------+| 7200000000 |+---------------+
वर्तमान तिथि
हम NOW()
pass पास कर सकते हैं किसी अन्य तिथि के साथ वर्तमान तिथि और समय की तुलना करने के लिए डेटाटाइम तर्कों में से एक:
SELECT
NOW(),
TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;
परिणाम:
+---------------------+----------+| अभी () | अंतर |+---------------------+------+| 2021-05-30 09:29:01 | -60 |+---------------------+------+
अशक्त तिथियां
यदि तिथियों में से कोई एक null
है , परिणाम null
. है :
SELECT TIMESTAMPDIFF(
YEAR,
'2030-02-01',
NULL
)
AS Result;
परिणाम:
+----------+| परिणाम |+-----------+| नल |+----------+
अनुपलब्ध तर्क
कॉलिंग TIMESTAMPDIFF()
तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:
SELECT TIMESTAMPDIFF();
परिणाम:
ERROR 1064 (42000):आपको अपने SQL सिंटैक्स में त्रुटि है; लाइन 1पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।
और दूसरा उदाहरण:
SELECT TIMESTAMPDIFF('2020-12-09');
परिणाम:
ERROR 1064 (42000):आपको अपने SQL सिंटैक्स में त्रुटि है; लाइन 1 पर '10, '2020-12-09')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से मेल खाने वाले मैनुअल की जांच करें।