我有一個表3列: ID(INT,PK) 時間(DATETIMEOFFSET) 儲值(INT)TSQL更新日期從今天DATETIMEOFFSET列
我只需要更新的時間日期根據已存儲在datetimeoffset(但不更改時間或時區信息)的時區,每行都有。例如,如果存儲的值爲:2014-10-08 08:25:46.0000000 +04:00,並且該時區的今天爲:2014-10-20,則該值應爲:2014-10-20 08:25:46.0000000 + 04:00但如果今天仍然是2014-10-19,那麼應該設置爲:2014-10-19 08:25:46.0000000 +04:00。
我該如何在TSQL中做到這一點?
UPDATE: 可能凌亂和不完整的答案根據時區不正確地更新每一行,但基於以下問題的答案:
DECLARE @date DATETIMEOFFSET = SYSDATETIMEOFFSET()
DECLARE @date2 datetimeoffset(4) = '12-10-25 12:32:10.1237 +01:0'
CONVERT(DATETIMEOFFSET, DATETIMEOFFSETFROMPARTS(datepart(yyyy, @date), datepart(mm, @date), datepart(dd, @date), datepart(HH, @date2), datepart(MI, @date2), datepart(SS, @date2), datepart(MILLISECOND, @date2), CAST((FLOOR(DATEPART(TZ, @date2))/60) AS VARCHAR(10)), CAST((DATEPART(TZ,@date2)%60) AS VARCHAR(10)), 3))
這不處理行更新到今天的日期。可能計算現有日期和今天之間的差異然後做這個?上面寫了一個不完整的答案。如果你可以在這個方向上改進/修改,那就太棒了! – user3546827 2014-10-08 23:02:25