今天的TSQL更新日期来自datetimeoffset列

时间:2014-10-08 11:36:32

标签: sql sql-server tsql datetimeoffset

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

我需要仅更新今天时间列中的日期,根据已存储在datetimeoffset中的时区每行<(但不要更改时间或时区信息)。例如,如果存储的值是:2014-10-08 08:25:46.0​​000000 +04:00,那么该时区的今天是:2014-10-20,它应该成为:2014-10-20 08:25:46.0​​000000 + 04:00但如果今天仍为2014-10-19该时区,则应设置为:2014-10-19 08:25:46.0​​000000 +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))

2 个答案:

答案 0 :(得分:0)

DECLARE @date DATETIMEOFFSET = '2013-01-31 10:02:12 +02:00'

select @date,CONVERT(DATETIMEOFFSET, DATEADD(day, 18, @date))

请查看以上代码。

答案 1 :(得分:0)

请试试这个!

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