डाली SQL सर्वर 2005 में, क्यों करता है:एसक्यूएल दिनांक
PRINT Cast('' AS datetime)
प्रदर्शन:
जनवरी 1 1900: 12:00 पूर्वाह्न
मैं यह होना चाहिए सोचा होगा null
?
डाली SQL सर्वर 2005 में, क्यों करता है:एसक्यूएल दिनांक
PRINT Cast('' AS datetime)
प्रदर्शन:
जनवरी 1 1900: 12:00 पूर्वाह्न
मैं यह होना चाहिए सोचा होगा null
?
खाली स्ट्रिंग 0
पर डाली जाती है जिसे बाद में युग की तारीख में डाला जाता है।
Oracle
के विपरीत, SQL Server
NULL
और एक खाली स्ट्रिंग के बीच अंतर करता है।
ऐसा इसलिए है क्योंकि खाली स्ट्रिंग ''
NULL
नहीं है। यदि आप करते हैं:
select Cast(null AS datetime)
उत्पादन:
-----------------------
NULL
(1 row(s) affected)
CAST and CONVERT (Transact-SQL)
चरित्र डेटा का प्रतिनिधित्व केवल तारीख या केवल समय घटकों datetime या smalldatetime को डाली है जब डेटा प्रकार, संयुक्त निर्दिष्ट समय घटक 00: 00: 00.000, और पर सेट किया गया है अनिर्दिष्ट दिनांक घटक से 1 9 00-01-01 पर सेट है।
प्रयोग से, ऐसा लगता है कि एसक्यूएल सर्वर DateTime
के लिए सीधे कास्ट करने के लिए प्रयास करता है, और ऐसा न करने पर कि DateTime
को int
और उसके बाद के लिए कास्ट करने के लिए प्रयास करता है:
PRINT Cast('2009-1-1' AS datetime)
go
PRINT Cast('2009/1/1' AS datetime)
go
PRINT Cast('1.1' AS datetime)
go
PRINT Cast('1/2009/1' AS datetime)
go
PRINT Cast('' AS int)
go
PRINT Cast(' ' AS int)
go
PRINT Cast(0 AS datetime)
go
PRINT Cast('X' AS datetime)
go
PRINT Cast('X' AS int)
आउटपुट:
Jan 1 2009 12:00AM
Jan 1 2009 12:00AM
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
Jan 1 2009 12:00AM
0
0
Jan 1 1900 12:00AM
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'X' to data type int.
यह परीक्षण कार्रवाई में मेरे उत्तर से बीओएल उद्धरण दिखाता है: 'डिफ़ॉल्ट का चयन करें (' 1/1/2010 'एएस डेटाटाइम) डिफ़ॉल्ट समय के रूप में, कास्ट (' 1: 23: 45.678 'एएस डेटाटाइम) डिफ़ॉल्ट के रूप में, कास्ट ('' एएस डेटेट ime) डिफ़ॉल्ट के रूप मेंडेटाइम '। यदि समय नहीं दिया जाता है तो यह '00: 00: 00.000' पर डिफ़ॉल्ट होता है, अगर तिथि नहीं दी जाती है तो यह' 1/1/1 9 00 ' –
आह .. समय यात्रा .. खुशी है कि किसी ने इसे पाया – CheeseConQueso