यदि आपको स्ट्रिंग्स का उपयोग करके डेटाटाइम निर्दिष्ट करने की आवश्यकता है, तो आपको सुरक्षित . का उपयोग करना चाहिए , भाषा-स्वतंत्र प्रारूप।
SQL सर्वर में, यह ISO-8601 प्रारूप (थोड़ा अनुकूलित) है, और यह मूल रूप से DATETIME
के लिए दो सुरक्षित स्वरूपों का समर्थन करता है जो हमेशा काम करता है - आपकी भाषा, क्षेत्रीय और दिनांक स्वरूप सेटिंग पर ध्यान दिए बिना:
YYYYMMDD (e.g. 20121231 for 31st of December 2012) if you need date only
YYYY-MM-DDTHH:mm:ss (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)
नोट:
-
पहले दिनांक-केवल प्रारूप में कोई डैश नहीं . है या सीमांकक!
-
दूसरे प्रारूप में दिनांक के लिए डैश हैं (इसे भी छोड़ा जा सकता है), और एक निश्चित
T
है स्ट्रिंग के दिनांक और समय भाग के बीच सीमांकक के रूप में
अपडेट करें: आपकी पिछली टिप्पणी के अनुसार (दो उपयोगकर्ताओं के लिए अलग-अलग डिफ़ॉल्ट भाषाओं पर) - इसे आजमाएं:
-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)
ठीक काम करता है...
-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)
यह स्ट्रिंग को 2012 के 30वें महीने की 11वीं तारीख . के रूप में समझने की कोशिश करता है और जाहिर है, यह विफल हो जाता है....