आंशिक-दूसरी बार डेटाटाइप के साथ कॉलम घोषित करने के लिए आपको MySQL संस्करण 5.6.4 या बाद में होना चाहिए। सुनिश्चित नहीं हैं कि आपके पास सही संस्करण है? कोशिश करें SELECT NOW(3)
. अगर आपको कोई त्रुटि मिलती है, तो आपके पास सही संस्करण नहीं है।
उदाहरण के लिए, DATETIME(3)
आपको आपके टाइमस्टैम्प में मिलीसेकंड रिज़ॉल्यूशन देगा, और TIMESTAMP(6)
आपको *nix-शैली टाइमस्टैम्प पर माइक्रोसेकंड रिज़ॉल्यूशन देगा।
इसे पढ़ें:https://dev.mysql.com/ doc/refman/8.0/hi/fractional-seconds.html
NOW(3)
आपको आपके MySQL सर्वर के ऑपरेटिंग सिस्टम से मिलीसेकंड परिशुद्धता के साथ वर्तमान समय देगा।
यदि आपके पास Unix युग के बाद से कई मिलीसेकंड हैं , DATETIME(3) मान प्राप्त करने के लिए यह प्रयास करें
FROM_UNIXTIME(ms * 0.001)
Javascript टाइमस्टैम्प , उदाहरण के लिए, Unix युग के बाद से मिलीसेकंड में दर्शाए गए हैं ।
(ध्यान दें कि MySQL आंतरिक भिन्नात्मक अंकगणित, जैसे * 0.001
, को हमेशा IEEE754 डबल प्रिसिजन फ़्लोटिंग पॉइंट के रूप में हैंडल किया जाता है, इसलिए यह संभावना नहीं है कि सूर्य के सफ़ेद ड्वार्फ स्टार बनने से पहले आप सटीकता खो देंगे।)
यदि आप MySQL के पुराने संस्करण का उपयोग कर रहे हैं और आपको सबसेकंड समय सटीकता की आवश्यकता है, तो आपका सबसे अच्छा तरीका अपग्रेड करना है। और कुछ भी आपको गन्दा काम करने के लिए मजबूर करेगा।
अगर, किसी कारण से आप अपग्रेड नहीं कर सकते हैं, तो आप BIGINT
. का उपयोग करने पर विचार कर सकते हैं या DOUBLE
जावास्क्रिप्ट टाइमस्टैम्प को स्टोर करने के लिए कॉलम जैसे कि वे नंबर थे। FROM_UNIXTIME(col * 0.001)
अभी भी ठीक काम करेगा। यदि आपको ऐसे कॉलम में स्टोर करने के लिए वर्तमान समय की आवश्यकता है, तो आप UNIX_TIMESTAMP() * 1000
का उपयोग कर सकते हैं।