那麼,我希望你有一個系統的方法來知道哪個行以什麼方式存儲,因爲DATETIME
沒有默認格式,並且您的字符串存儲格式錯誤... ,因爲在該格式不存在SQL中的。沒有外界的幫助,SQL無法知道。
- 沒有日期格式化
YYYY-DD-MM
。看起來像定製工作。 :/
- VARCHAR(16)也意味着你沒有任何秒
DATETIME
格式... ...好吧! :(
除非你事先知道哪些日期的格式是什麼,這將是幾乎是不可能的,而不必返回到被髮布這些「日期」源來排序了這一點。
SELECT CASE WHEN ISDATE('19841511') = 0
THEN SUBSTRING('19841511', 1, 4) + '-' --YEAR
+ SUBSTRING('19841511', 7, 2) + '-' -- MONTH
+ SUBSTRING('19841511', 5, 2) END AS [YYYY-MM-DD]
, CASE WHEN ISDATE('01012007') = 0
THEN SUBSTRING('01012007', 5, 4) + '-' --YEAR
+ SUBSTRING('01012007', 3, 2) + '-' --MONTH
+ SUBSTRING('01012007', 1, 2) END AS [YYYY-MM-DD]
注意在兩種格式的區別...這兩種格式並不存儲在該SQL Server可識別的日期格式
DATETIME2
不使用你正在尋找YYYY-MM-DD HH的默認格式:毫米:ss [。分數秒]
希望這至少能讓你朝着正確的答案!
你打算如何確定「20121001」是什麼日期? – Squirrel
那麼,假設它是01'Oct 2012,沒有選擇來查找是否是對的或錯誤的,這就是爲什麼我說各種任性的格式轉換爲1統一的日期時間字段,讓查詢數字出來。 – Sachin25
可愛,日期格式不正確。我希望你知道哪些格式化的方式。 :/ –