sql server中带有时区的currenttimestamp



用我们/中心时区检索当前时间戳的sql server查询是什么?

您需要本地和远程时区,因此Oracle可以计算差异,例如

SELECT FROM_TZ(CAST(sysdate AS TIMESTAMP), 'America/New_York') 
AT TIME ZONE 'America/Los_Angeles'
FROM DUAL;
30.10.14 08:45:08,000000000 AMERICA/LOS_ANGELES

SELECT FROM_TZ(CAST(sysdate AS TIMESTAMP), 'America/New_York') 
AT TIME ZONE 'America/Chicago'
FROM DUAL;
30.10.14 10:46:17,000000000 AMERICA/CHICAGO

您可以通过以下方式获得时区名称列表:

SELECT tzname, tzabbrev FROM V$TIMEZONE_NAMES;

所以你可以这样做:

SELECT FROM_TZ(CAST(sysdate AS TIMESTAMP), 'America/New_York') 
AT TIME ZONE 'US/Central'
FROM DUAL;

假设你在纽约。

如果这是针对SQL Server 2008或更高版本的,它将提供特定时区偏移的时间。我不知道你是否可以提供时区名称,使用这种方法,你必须自己处理夏令时。

declare @dt datetimeoffset = switchoffset(convert(datetimeoffset, getutcdate()), '-06:00')
select getutcdate() as utc, @dt as [datetimeoffset], cast(@dt as datetime) as [datetime]

SQL Server 2016增加了时区支持。你现在可以这样做:

SELECT SYSDATETIMEOFFSET() AT TIME ZONE 'Central Standard Time'

请注意,标识符Central Standard Time是美国和加拿大中央时间的Windows时区ID。它包括CST和CDT。

相关内容

  • 没有找到相关文章

最新更新