我有一個varchar型別的列,它包含日期和'#':
31.01.2022
31.01.2022
30.11.2021
31.12.2021
30.11.2021
28.02.2022
28.02.2022
#
我正在嘗試將日期轉換為標準日期格式(YYYY-MM-DD),并在出現時保留“#”。
這是我的代碼:
CASE
WHEN table.CalendarColumn='#' THEN '#'
ELSE CONVERT(date, table.CalendarColumn, 104) END AS Calendar
結果列也是varchar(10)型別(與原始列相同)。
我希望在單元格為 # 時得到 # ,而在不是 # 時得到轉換后的日期,但我得到了這個錯誤:
從字串轉換日期和/或時間時轉換失敗。
uj5u.com熱心網友回復:
由于資料型別優先,編譯器試圖轉換#為日期。
因此,您需要以您想要的樣式將date值轉換回 a 。varchar更短的語法是使用TRY_CONVERTandISNULL
SELECT
ISNULL(
CONVERT(varchar(20),
TRY_CONVERT(date, table.CalendarColumn, 104),
23),
table.CalendarColumn) AS Calendar
FROM....
db<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481356.html
