यदि आपको स्ट्रिंग्स का उपयोग करके डेटाटाइम निर्दिष्ट करने की आवश्यकता है, तो आपको सुरक्षित . का उपयोग करना चाहिए , भाषा-स्वतंत्र प्रारूप।
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वीं तारीख . के रूप में समझने की कोशिश करता है और जाहिर है, यह विफल हो जाता है....