简体   繁体   English

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

[英]Time zone datetime comparison in sql server 2016

In the database I have timezone and date as : 在数据库中,我的时区和日期为:

Timezone 'India Standard Time' 时区 “印度标准时间”

DateTime '2018-07-19 15:47' DateTime'2018-07-19 15:47'

In Sql query I am comparing this with GETUTCDATE() 在Sql查询中,我将此与GETUTCDATE()进行比较

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

This give me wrong result 这给我错误的结果

I am new with this function so don't know exact way to compare it 我是这个功能的新手,所以不知道确切的比较方法

There are many approaches to get this working - 有很多方法可以使此工作正常进行-

My approach is to convert your GETUTCDATE to IST so that you can run your query without any timezone issues. 我的方法是将GETUTCDATE转换为IST,以便您可以运行查询而不会出现任何时区问题。

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

just use 只是使用

dateadd(MINUTE, 330, getutcdate()) dateadd(MINUTE,330,getutcdate())

in place of 代替

getutcdate() getutcdate()

for IST 对于IST

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM