Sql-Server
更改 DateTime 欄位的時間
我需要更改日期時間欄位的時間。我嘗試使用這種語法,但它給了我一個錯誤
關鍵字 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) < 11 THEN col ELSE DATEADD(HOUR, 11, CONVERT(datetime, CONVERT(date, col))) END