Sql server 比较两个不同时区的日期

Sql server 比较两个不同时区的日期,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,有没有办法比较SQL Server 2008 R2中位于不同时区的两个日期(datetime数据类型) 将PST转换为EST时是否需要担心DST?看起来总有3个小时的差距 在下面的脚本中,事务日期在PST时区,@date参数在EST时区 DECLARE @Date DATETIME = '2019/03/09 00:01:57.000' SELECT f.[CustomerNum] , f.[Amount] , f.[TransactionDate] , c

有没有办法比较SQL Server 2008 R2中位于不同时区的两个日期(datetime数据类型)

将PST转换为EST时是否需要担心DST?看起来总有3个小时的差距

在下面的脚本中,事务日期在PST时区,@date参数在EST时区

DECLARE @Date DATETIME = '2019/03/09 00:01:57.000'

SELECT  
    f.[CustomerNum] ,
    f.[Amount] ,
    f.[TransactionDate] ,
    cus.Linkdate            
FROM    
    [Transaction] f
INNER JOIN 
    dbo.Customer cus ON cus.CusNum = f.CustomerNum AND cus.OID = f.OID
WHERE   
    f.TransactionDate > @Date
这样行吗

DATEADD(MINUTE, DATEPART(TZoffset, SYSDATETIMEOFFSET()), fpn.TransactionDate)> DATEADD(MINUTE, DATEPART(TZoffset, SYSDATETIMEOFFSET()), @Date)

PST和EST之间的偏移量为3小时

WHERE f.TransactionDate > DATEADD(hour, 3, @Date)  

PST和EST之间的偏移量为3小时

WHERE f.TransactionDate > DATEADD(hour, 3, @Date)  

如果参数对时区敏感,最好使用明确描述其时区的数据类型,如
datetimeoffset
。然后,您可以使用
switchoffset
更改到所需的时区

DECLARE @Date DATETIMEOFFSET = '2019/03/09 00:01:57.000 -05:00' -- EST
SELECT  
    f.[CustomerNum] ,
    f.[Amount] ,
    f.[TransactionDate] ,
    cus.Linkdate            
FROM    
    [Transaction] f
INNER JOIN 
    dbo.Customer cus ON cus.CusNum = f.CustomerNum AND cus.OID = f.OID
WHERE   
    f.TransactionDate > cast(switchoffset(@Date,'-08:00') as datetime) -- PST

如果参数对时区敏感,最好使用明确描述其时区的数据类型,如
datetimeoffset
。然后,您可以使用
switchoffset
更改到所需的时区

DECLARE @Date DATETIMEOFFSET = '2019/03/09 00:01:57.000 -05:00' -- EST
SELECT  
    f.[CustomerNum] ,
    f.[Amount] ,
    f.[TransactionDate] ,
    cus.Linkdate            
FROM    
    [Transaction] f
INNER JOIN 
    dbo.Customer cus ON cus.CusNum = f.CustomerNum AND cus.OID = f.OID
WHERE   
    f.TransactionDate > cast(switchoffset(@Date,'-08:00') as datetime) -- PST

这能解决DST吗?你说的DST是什么意思?夏令时(DST)我明白了,我想我可以提出另一个解决方案。好的,经过一些研究,用SQL Server 2008处理DST似乎很困难,一些人为此构建了一个特定的功能。不幸的是,我帮不了你更多。这会处理DST吗?你说的DST是什么意思?夏令时(DST)我明白了,我想我可以提出另一个解决方案。好的,经过一些研究,用SQL Server 2008处理DST似乎很难,有些人为此构建了一个特定的功能。不幸的是,我帮不了你更多。在将PST转换为EST时,我需要担心DST吗?看起来总有3个小时的差异。这取决于您如何输入您的
transactiondate
。交易日期将以PST为单位time@user1263981然后,是的,只要它保持PST一致(而不是PDT),它将始终是3小时的差异。在将PST转换为EST时,我需要担心DST吗?看起来总有3个小时的差异。这取决于您如何输入您的
transactiondate
。交易日期将以PST为单位time@user1263981然后,是的,只要它保持PST一致(而不是PDT),它将始终是3小时的差异。