用我们/中心时区检索当前时间戳的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。