代码之家  ›  专栏  ›  技术社区  ›  Furqan Misarwala

在SQL Server中比较UTC和偏移日期时间

  •  1
  • Furqan Misarwala  · 技术社区  · 6 年前

    我正在数据库中存储UTC日期时间

    例如

    2018-06-05 11:37:00.000(协调世界时)

    2018-06-05 17:07(+5:30印度标准时间)

    我的偏移量为:

    偏移量为+02:00

    如何在SQL查询中比较现在偏移匹配的时间?

    例如

    2018年6月5日13:37:00.000

    我的问题是x(ist)日期时间转换为UTC,现在我想转换到不同的时区(y)

    2 回复  |  直到 6 年前
        1
  •  1
  •   EzLo tumao kaixin    6 年前

    以下功能帮助我解决问题:

    1。开关偏移

    2。ToDateTimeOffset

    SELECT GETDATE()
    
    SELECT SWITCHOFFSET(GETDATE(), '+05:30')  
    
    SELECT CONVERT(VARCHAR(19), SWITCHOFFSET(TODATETIMEOFFSET(GETDATE(), '+05:30'),'+00:00'), 120)
    
    SELECT GETUTCDATE()
    
        2
  •  0
  •   Will Jones    6 年前

    如果我正确理解您的问题,您可以使用dateadd函数根据UTC日期时间和偏移量计算新的日期时间

    例如:

    2小时=120分钟

    DATEADD(minute, 120, '2018-06-05 11:37:00.000')
    

    或使用小时

    DATEADD(hour, 2, '2018-06-05 11:37:00.000')
    

    你也可以用负数来代替

    不必使用文字值,可以为参数3提供列名,以便在查询中使用,还可以将此表达式用作where子句的一部分


    下面是DateAdd函数的备忘单:

    https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-2017