我有這樣的查詢運行正常:返回SQL怪異轉換
SELECT
Value
FROM data
WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'
:
27/6/2011 19:12:28
11/7/2011 19:18:54
10/7/2011 11:49:35
3/7/2011 17:41:53
,如果我改變了查詢:
SELECT
VALUE,
MONTH(Value)
FROM data
WHERE MetaDataID = 'f249819e-817f-4be5-bee9-21aa3d7f72e6'
我收到錯誤:將char數據類型轉換爲日期時間數據類型導致超出範圍的日期時間值。
信息,這可能有助於:
1)值列是VARCHAR類型。
2)當我指定MetaDataId時,我確定結果是「日期」。爲了確保,我已經使用WHERE IsDate(Value)= 1,並且我還使用了ISDATe(Value)來查看每個結果是否是日期並且它是...
我不'不知道爲什麼這會發生......任何人都有線索?
服務器和客戶端是否位於同一本地化中 - 您的SQL服務器是否正在運行,例如,美國英語哪裏27將被解析爲月份編號? – Rup
是相同的位置和月份被解析爲數字 – ShadowG
這就是爲什麼,*如果*我要支持任意數據存儲如此,我包括適當類型的列,而不是將所有內容轉換爲/從varchars(我會通常還包括適當的密鑰和檢查,以便如果元數據意味着日期,則只能填充日期列) –