在sql server中比较UTC和偏移日期时间

时间:2018-06-05 12:44:24

标签: sql sql-server sql-server-2008 tsql sql-server-2012

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

e.g。

  

2018-06-05 11:37:00.000(UTC)

     

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

我正在抵消:

  

偏移为+02:00

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

e.g。

  

2018-06-05 13:37:00.000

我的问题是X(IST)日期时间转换为UTC,现在我想转换到不同的时区(Y)

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以使用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

答案 1 :(得分:0)

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

  

<强> 1。 SWITCHOFFSET

     

<强> 2。 TODATETIMEOFFSET

SELECT GETDATE()

SELECT SWITCHOFFSET(GETDATE(), '+05:30')  

SELECT CONVERT(VARCHAR(19), SWITCHOFFSET(TODATETIMEOFFSET(GETDATE(), '+05:30'),'+00:00'), 120)

SELECT GETUTCDATE()