簡體   English   中英

SQL 服務器未轉換字符串 YYYYMMdd 到日期

[英]SQL Server Not Casting String YYYYMMdd to Date

我有一個查詢在服務器遷移之前工作正常,但現在不工作了。 我試圖將所有日期轉換為特定的月份和年份,但我不斷收到此錯誤:

從字符串轉換日期和/或時間時轉換失敗。

查看數據, InputDate中沒有 null 個值,這是一個date數據類型列。 當我運行Concat() function 時,所有內容都被格式化為“YYYYMMdd”,但 CAST 和 CONVERT 都失敗並出現相同的錯誤。

我的查詢是否存在我沒有發現的問題?

SELECT RandoSTUFF,
       DATEADD(day,2,CAST(CONCAT('2023','02',FORMAT(InputDate,'dd')) AS date)) AS MovedDate 
FROM a_table_ 

我預計問題是您的日期值接近月末,並且您正在嘗試為更短的 2 月編寫等效值。

因此,如果您的InputDate值為2022-12-31並運行問題中的代碼,它將提取31並將其與其他值連接,您最終將嘗試這樣做:

CAST('20230231' as Date)

當然,沒有這樣的日期。

實際上,不清楚您是否希望將這樣的輸入輸入到 map 到 2 月 28 日或 3 月 3 日。要解決此問題,您需要重新考慮問題,因此您只嘗試將 map 輸入到有效日期,並確保最終結果是更明確的定義。 這是使用日期/時間函數而不是從字符串組成日期幾乎總是更好的眾多原因之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM