2013年10月24日 星期四

[SQL SERVER][T-SQL]字串轉日期出現"從字元字串轉換成日期及/或時間時,轉換失敗"的錯誤訊息

        TABLE中欄位CounterDateTime屬性是char,且資料類型都是"2013-10-24 15:18:51.0000"的資料,但是在做CONVERT的時候卻出現"從字元字串轉換成日期及/或時間時,轉換失敗"的錯誤訊息

透過ISDATE函數查詢發現該欄位回應值都是0

MSDN查了一下會回覆0有以下五種情形:
  1. NULL
  2. 在<資料類型>的任何資料類型類別目錄中所列的資料類型值,但字元字串、Unicode 字元字串或日期和時間除外。
  3. text、ntext 或 image 資料類型的值。
  4. 秒數有效位數超過 3 的任何值 (.0000 到 .0000000...  n)。 如果 expression 是 datetime2 值,則 ISDATE 會傳回 0。如果 expression 是有效的 datetime 值,則會傳回 1。
  5. 混合有效日期與無效值的任何值,例如 1995-10-1a。

所以我只要改寫一下就OK了
SELECT convert(datetime,substring (max([CounterDateTime]),1,19))
FROM [DBA-MarginProd-PerfLog].[dbo].[CounterData]

沒有留言:

張貼留言