有没有办法比较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)
如果您的参数对时区敏感,则最好使用明确描述其时区的数据类型,例如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