【问题标题】:Add or remove hours to timestamp while select选择时为时间戳添加或删除小时
【发布时间】:2018-05-08 08:53:25
【问题描述】:

我们将时间戳以“2017-08-25 14:34:20.0000000 +00:00”格式存储在 UTC 中。我们的客户直接从 db 中选择时间戳,并且他们希望添加额外的小时数以适应其时区存储的时间戳。我可以设置一个选择查询以使其将小时数添加到当前时间戳吗?数据库sql-server

【问题讨论】:

  • 我的意思是,我们将时区存储在 utc +0 中,他们想要它在 utc +6 中。我想以增加六个小时的方式选择时区集查询。例如,“2017-08-25 14:34:20.0000000 +00:00”将变为“2017-08-25 20:34:20.0000000 +00:00”

标签: sql sql-server


【解决方案1】:

也许这会有所帮助:

DATEADD() 函数从日期中添加或减去指定的时间间隔。

DATEADD(间隔、数字、日期)

间隔 必需。返回的时间/日期部分。可以是其中之一 以下值:

  • 年, yyyy, yy = 年季度,
  • qq, q = 季度月,
  • mm, m = 月
  • dayofyear = 一年中的某一天,dy,
  • y = 天
  • 周,ww,wk = 周
  • 工作日,dw,w = 工作日
  • 小时,hh = 小时
  • 分钟,英里,n = 分钟
  • 秒,ss,s = 秒
  • 毫秒,ms = 毫秒

数字 必填。要使用的间隔数

日期 必需。应添加间隔的日期

DATEADD(HOUR,1,fieldFromSQL)

【讨论】:

    【解决方案2】:

    我发现新命令“AT TIME ZONE”对此非常有用。 这需要 SQL Server 2016 sp1。 方法如下:

    DECLARE @FieldFromSQL DATETIME2= GETUTCDATE()
    SELECT @FieldFromSQL AS DateTimeInUTC , @FieldFromSQL 
         AT TIME ZONE 'utc' 
         AT TIME ZONE 'Central Europe Standard Time' AS DateTimeInLocalTime
    

    它也适用于日光时间变化,我遇到了很多问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多