SQL Server 2016中的时区日期时间比较

时间:2018-07-19 10:31:22

标签: sql sql-server sql-server-2016

在数据库中,时区和日期为:

时区 “印度标准时间”

DateTime '2018-07-19 15:47'

在Sql查询中,我将此与 GETUTCDATE()

进行比较
IF EXISTS( SELECT * FROM [dbo].[Notification] WHERE [Published] AT TIME ZONE  'India Standard Time'  <  GETUTCDATE())
  BEGIN
 PRINT 'True'
  END

这给我错误的结果

我是这个功能的新手,所以不知道确切的比较方法

2 个答案:

答案 0 :(得分:0)

有很多方法可以使它工作-

我的方法是将GETUTCDATE转换为IST,以便您可以运行查询而不会出现任何时区问题。

SELECT * FROM [dbo].[Notification] 
WHERE [Published] < CONVERT(datetime,SWITCHOFFSET(CONVERT(datetimeoffset,GETUTCDATE()),’+05:30′))

答案 1 :(得分:0)

只需使用

  

dateadd(MINUTE,330,getutcdate())

代替

  

getutcdate()

对于IST

SELECT * FROM [dbo].[Notification] WHERE [Published]  <  dateadd(MINUTE, 330, getutcdate())