TSQL使用DateFrom datetimeoffset列中的今天更新日期

TSQL使用DateFrom datetimeoffset列中的今天更新日期,sql,sql-server,tsql,datetimeoffset,Sql,Sql Server,Tsql,Datetimeoffset,我有一个包含3列的表: ID(int,PK) 时间(datetimeoffset) 存储值(int) 我只需要根据已经存储在datetimeoffset中的时区,在Time列中的每一行更新日期,但不要更改时间或时区信息。例如,如果存储值为: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

我有一个包含3列的表: ID(int,PK) 时间(datetimeoffset) 存储值(int)

我只需要根据已经存储在datetimeoffset中的时区,在Time列中的每一行更新日期,但不要更改时间或时区信息。例如,如果存储值为: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中做到这一点

更新: 可能是混乱和不完整的答案,不能根据时区正确更新每一行,但基于以下答案:

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))
请检查以上代码。

请尝试此代码

 dateadd(dd,datediff(dd,timecolumn,getdate()),timecolumn)

这不会将行更新到今天的日期。可能计算现有日期和今天之间的差异,然后执行此操作?上面写着一个不完整的答案。如果你能在这个方向上改进/修改,那就太好了!
 dateadd(dd,datediff(dd,timecolumn,getdate()),timecolumn)