【问题标题】:TSQL update date with today from datetimeoffset columnTSQL 从 datetimeoffset 列用今天更新日期
【发布时间】:2014-10-08 11:36:32
【问题描述】:

我有一个包含 3 列的表格: ID(整数,PK) 时间(日期时间偏移) 存储值(整数)

我只需要将 Time 列中的日期更新为今天,根据已存储在 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 中做到这一点?

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

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))

【问题讨论】:

    标签: sql sql-server tsql datetimeoffset


    【解决方案1】:
    DECLARE @date DATETIMEOFFSET = '2013-01-31 10:02:12 +02:00'
    
    select @date,CONVERT(DATETIMEOFFSET, DATEADD(day, 18, @date))
    

    请检查上面的代码。

    【讨论】:

    • 这不处理将行更新到今天的日期。可能计算现有日期和今天之间的差异然后这样做?上面写了一个不完整的答案。如果您可以朝那个方向改进/修改,那就太好了!
    【解决方案2】:

    请试试这个!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      相关资源
      最近更新 更多