Sql-Server

更改 DateTime 欄位的時間

  • May 8, 2020

我需要更改日期時間欄位的時間。我嘗試使用這種語法,但它給了我一個錯誤

關鍵字 as 附近的語法不正確

我可以使用什麼語法來更改日期時間欄位的結束時間?

case when CAST([pcpts].stopit As DateTime)+CAST(case when CAST([pcpts].stopit As Time) > '11:00:00.000' then '11:00:00.000' ELSE CAST([pcpts].stopit As Time) end as datetime) As [SI]

編輯

我所追求的是如果時間價值

$$ pcpts $$.stopit > 11:00:00.000 我希望我的查詢顯示 11:00:00.000, 如果時間價值為

$$ pcpts $$.stopit < 11:00:00.000 然後顯示$$ pcpts $$。停止 例如: [pcpts].stopit = '01/01/2014 10:00:00.000'

查詢輸出應顯示 ‘01/01/2014 10:00:00.000’

[pcpts].stopit = '01/01/2014 16:00:00.000'

查詢輸出應顯示 ‘01/01/2014 11:00:00.000’

首先,您需要停止對日期/時間值執行速記數學運算,例如 +。當您切換到較新的類型時,這會中斷,您應該這樣做。

對於這個特定問題,您可以簡單地使用CASE表達式來 (a) 按datetime原樣返回,或 (b) 轉換為date然後添加 11 小時。

CASE WHEN DATEPART(HOUR, col) &lt; 11 
 THEN col
 ELSE DATEADD(HOUR, 11, CONVERT(datetime, CONVERT(date, col)))
END

引用自:https://dba.stackexchange.com/questions/129329