मारियाडीबी में, SYSDATE()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो वर्तमान दिनांक और समय लौटाता है।
यह उस समय को लौटाता है जब फ़ंक्शन निष्पादित किया गया था (जो उस समय से भिन्न हो सकता है जब कथन निष्पादित किया गया था)।
वापसी मान 'YYYY-MM-DD HH:MM:SS'
में दिया जाता है या YYYYMMDDHHMMSS.uuuuuu
प्रारूप, इस पर निर्भर करता है कि फ़ंक्शन का उपयोग स्ट्रिंग या संख्यात्मक संदर्भ में किया जाता है या नहीं।
वापसी मूल्य वर्तमान समय क्षेत्र में व्यक्त किया जाता है।
आपके पास माइक्रोसेकंड सटीक निर्दिष्ट करने का विकल्प भी है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
SYSDATE([precision])
जहां precision
एक वैकल्पिक तर्क है जो माइक्रोसेकंड परिशुद्धता को निर्दिष्ट करता है।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT SYSDATE();
परिणाम:
+---------------------+ | SYSDATE() | +---------------------+ | 2021-05-27 08:40:41 | +---------------------+
संख्यात्मक संदर्भ
जब SYSDATE()
एक संख्यात्मक संदर्भ में प्रयोग किया जाता है, परिणाम YYYYMMDDHHMMSS.uuuuuu
में है प्रारूप।
उदाहरण:
SELECT
SYSDATE(),
SYSDATE() + 0;
परिणाम:
+---------------------+----------------+ | SYSDATE() | SYSDATE() + 0 | +---------------------+----------------+ | 2021-05-27 08:41:19 | 20210527084119 | +---------------------+----------------+
परिशुद्धता
माइक्रोसेकंड सटीक निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
SELECT
SYSDATE(6),
SYSDATE(6) + 0;
परिणाम:
+----------------------------+-----------------------+ | SYSDATE(6) | SYSDATE(6) + 0 | +----------------------------+-----------------------+ | 2021-05-27 08:41:44.561665 | 20210527084144.562263 | +----------------------------+-----------------------+
माइक्रोसेकंड परिशुद्धता के लिए अधिकतम मान 6 है। यहां बताया गया है कि जब सटीकता के लिए एक उच्च संख्या पास की जाती है तो क्या होता है:
SELECT SYSDATE(12);
परिणाम:
ERROR 1426 (42000): Too big precision 12 specified for 'sysdate'. Maximum is 6. है
SYSDATE()
बनाम NOW()
हालांकि SYSDATE()
NOW()
. के समान है समारोह, मतभेद हैं।
मुख्य अंतरों में से एक यह है कि SYSDATE()
उसके द्वारा निष्पादित समय लौटाता है, जबकि NOW()
उस समय को लौटाता है जब कथन निष्पादित करना शुरू कर देता है। जब एक संग्रहीत कार्यविधि या ट्रिगर के भीतर चलाया जाता है, NOW()
वह समय लौटाएगा जब संग्रहीत प्रक्रिया या ट्रिगर निष्पादित करना शुरू कर देता है।
यहां एक उदाहरण दिया गया है जो इस अंतर को प्रदर्शित करता है:
SELECT
NOW(),
SYSDATE(),
SLEEP(5),
NOW(),
SYSDATE();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
NOW(): 2021-05-27 08:47:06 SYSDATE(): 2021-05-27 08:47:06 SLEEP(5): 0 NOW(): 2021-05-27 08:47:06 SYSDATE(): 2021-05-27 08:47:11
इस मामले में हमने SLEEP()
. का इस्तेमाल किया फ़ंक्शन कॉल के दूसरे लॉट से पहले पांच सेकंड के लिए प्रसंस्करण को रोकने के लिए कार्य करता है।
हम दूसरी बार देख सकते हैं SYSDATE()
लागू किया गया था, इसका वापसी मूल्य पहली बार अलग था। NOW()
दूसरी ओर, दोनों बार समान मान लौटाया।
SYSDATE()
. का उपयोग करते समय कुछ अन्य बातों का ध्यान रखना चाहिए . उदाहरण के लिए, SET TIMESTAMP
इसे प्रभावित नहीं करता (जबकि यह करता है NOW()
को प्रभावित करें समारोह)। साथ ही, SYSDATE()
यदि कथन-आधारित बाइनरी लॉगिंग का उपयोग किया जाता है तो प्रतिकृति के लिए असुरक्षित है। हालांकि, जरूरत पड़ने पर इससे निपटने के तरीके भी हैं। अधिक जानकारी के लिए मारियाडीबी दस्तावेज देखें।