2018年4月19日 星期四

[研究][SQL] 從字元字串轉換成日期及/或時間時,轉換失敗。

[研究][SQL] 從字元字串轉換成日期及/或時間時,轉換失敗。

SQL Server 2016
SQL Server Management Studio 上看到

SELECT
    CASE YEAR([MyDate]) WHEN '1900' THEN '' ELSE [MyDate] END AS [MyDate],
    CASE YEAR([MyDate]) WHEN 1900 THEN 'x' ELSE CONVERT(VARCHAR, [MyDate],111) END AS [MyDate],
    CASE YEAR([MyDate]) WHEN 1900 THEN 'x' ELSE [MyDate] END AS [MyDate],
    CASE YEAR([MyDate]) WHEN 1900 THEN '9999' ELSE [MyDate] END AS [MyDate],
    CASE YEAR([MyDate]) WHEN 1900 THEN '1' ELSE [MyDate] END AS [MyDate],
    CASE YEAR([MyDate]) WHEN 1900 THEN 'x' ELSE 'y' END AS [MyDate],
    CASE CONVERT(CHAR(4), [MyDate],111) WHEN '1900' THEN '' ELSE [MyDate] END AS [MyDate]
FROM  [JiguanAuditContext]


那幾行出問題?

出問題在
第一行黃色,因為 x 是字串格式,MyDate 是日期格式,而且 x 無法轉換成日期格式。
第二行黃色,因為 '1' 是字串格式,MyDate 是日期格式,而且 x 無法轉換成日期格式。

其他都正常。
紫色這行,字串 '9999' 可以轉換成日期 '9999-01-01 00:00:00.000' ,所以不會出錯。(但
'1' 不能轉)
綠色這行,字串 'x' 和 'y' 都是字串。
淡藍這行,字串 '' 會用該欄位設定的預設值 。

(待續)

沒有留言:

張貼留言