有誰知道為什么會這樣:
SELECT DATEADD(HOUR,4,'2021-11-01 05:10:00.0000000')
回傳以下錯誤:
從字串轉換日期和/或時間時,訊息 241,級別 16,狀態 1,第 1 行轉換失敗。
但是,在使用僅達毫秒像
SELECT DATEADD(HOUR, 4, '2021-11-01 05:10:00.000')
它作業并回傳:
2021-11-01 13:10:00.000
而在一個表,其中列包括使用時納秒像
SELECT DATEADD(HOUR, 4, column-name)
它也有效。
uj5u.com熱心網友回復:
因為您提供了一個文字字串,因此DATEADD將值轉換為其默認資料型別datetime. Adatetime精確到 1/300 秒,2021-11-01 05:10:00.0000000因此類似的值太大;它的精度大于 1/300 秒。
如果您將值顯式轉換為高達 1/1000000 秒的日期和時間資料型別,它將起作用:
SELECT DATEADD(HOUR,4,CONVERT(datetime2(7),'2021-11-01 05:10:00.0000000'))
uj5u.com熱心網友回復:
從dateadd檔案:
字串文字值必須決議為日期時間。
該日期時間型別只能接受毫秒。嘗試決議精度超過毫秒的字串將失敗。
(請注意,將datetime四舍五入為 .000、.003 或 0.007 秒。例如,1 毫秒四舍五入為 0。)
如果您嘗試宣告 adatetime并將其初始化為具有超過 3 個小數位秒精度的文字字串,則會發生相同的錯誤:
DECLARE @datetime datetime = '12:10:05.0000'
從字串轉換日期和/或時間時,訊息 241,級別 16,狀態 1,第 3 行轉換失敗。
您可以添加到 a datetime2,但您必須先宣告datetime2變數,而不是使用字串文字:
declare @date datetime2 = '2021-11-01 05:10:00.0000000'
SELECT DATEADD(HOUR, 4, @date)
2021-11-01 09:10:00.0000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344757.html
標籤:sql sql-server 添加日期
上一篇:在MSSQLServer中將列轉換為行-動態UNPIVOT
下一篇:Oracle:按日期欄位合并多行
