如何将偏移值添加/减去日期时间并在 SQL 中返回新的日期时间值?
Posted
技术标签:
【中文标题】如何将偏移值添加/减去日期时间并在 SQL 中返回新的日期时间值?【英文标题】:How can I add/subtract the offset value into datetime and return new datetime value in SQL? 【发布时间】:2021-12-28 07:36:03 【问题描述】:我是 SQL 新手,我想在 DateTime
中添加/减去偏移值并返回新日期。
目前,我正在使用这个
SELECT
GETUTCDATE() AS UTCDate,
GETUTCDATE() AT TIME ZONE 'Eastern Standard Time'
返回这些值:
当前结果:2021-12-28 07:19:39.320 -05:00
预期结果:2021-12-28 02:19:39.320
我怎样才能做到这一点?任何帮助,将不胜感激。谢谢
【问题讨论】:
cast(GETUTCDATE() at time zone 'utc' AT TIME ZONE 'Eastern Standard Time' as datetime)
@lptr 干净整洁的解决方案。谢谢
【参考方案1】:
您可以使用 DATEADD 和 DATEDIFF 函数:
SELECT GETUTCDATE() AS UTCDate, GETUTCDATE() AT TIME ZONE 'Eastern
Standard Time' ,
DATEADD(MINUTE, DATEDIFF(MINUTE ,GETUTCDATE(), GETUTCDATE() AT TIME ZONE
'Eastern Standard Time')*-1, GETUTCDATE())
【讨论】:
【参考方案2】:GETUTCDATE()
返回datetime
类型。您可以改用SYSDATETIMEOFFSET()
来获取datetimeoffset
并将其转换为所需的时区。
SELECT
SYSDATETIMEOFFSET() AS UTCDate_with_timezone,
SYSDATETIMEOFFSET() AT TIME ZONE 'Eastern Standard Time';
当AT TIME ZONE
运算符应用于datetime
值时,它不会更改值,您只需告知系统时区是什么。并且这个时区将被附加到值中。
【讨论】:
以上是关于如何将偏移值添加/减去日期时间并在 SQL 中返回新的日期时间值?的主要内容,如果未能解决你的问题,请参考以下文章
如何减去而不是添加像 sql 函数一样的 Sum() [关闭]