Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вземете текущата часова зона на сървъра в SQL Server (T-SQL)

Microsoft представи CURRENT_TIMEZONE() функция в SQL Server 2019 за връщане на часовата зона на сървъра.

По-конкретно, тази функция „връща името на часовата зона, наблюдавана от сървър или екземпляр“.

Пример

Ето пример за демонстрация.

SELECT CURRENT_TIMEZONE();

Резултат:

(UTC) Coordinated Universal Time

В този случай часовата зона на моя екземпляр на SQL Server е UTC.

Мога да видя това, когато стартирам функции като SYSDATETIMEOFFSET() .

SELECT SYSDATETIMEOFFSET();

Резултат:

2020-04-01 00:14:44.0470785 +00:00

UTC има изместване на часовата зона от +00:00 (без изместване) и това се отразява, когато върна датата и часа на системата.

По-ранни версии на SQL Server

Ако стартирам CURRENT_TIMEZONE() срещу моя екземпляр на SQL Server 2017, ето какво получавам.

SELECT CURRENT_TIMEZONE();

Резултат:

Msg 195, Level 15, State 10, Line 1
'CURRENT_TIMEZONE' is not a recognized built-in function name.

Дори изтеглих най-новия Docker контейнер със SQL Server 2017 за Linux, за да проверя това, но все още получавам тази грешка.

Проверих и други инсталации на SQL Server 2017, но със същия резултат.

В секцията за коментари на своята онлайн документация за тази функция, Microsoft намеква, че CURRENT_TIMEZONE() ще бъде пренесен към по-ранни версии на SQL Server, но изглежда, че това не се е случило към момента на писане.

Междувременно можете да опитате следния код.

DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone

Резултат:

UTC

Пуснах го на същия екземпляр на SQL Server 2017, който не поддържа CURRENT_TIMEZONE() , и работи добре.

Очевидно вашият резултат ще зависи от това къде се намира вашият сървър (или поне за коя часова зона е конфигуриран). Ето какво получавам, ако изпълня това изявление на друг сървър:

W. Europe Standard Time

SQL Server също има системен изглед, който ви позволява да върнете списък с поддържани часови зони, които можете да използвате за кръстосана проверка на резултатите тук.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Клауза WHERE срещу ON при използване на JOIN

  2. Техническо сравнение:Microsoft Access 2016 срещу SQL Server 2016

  3. Как да създадете таблица с колона за идентичност

  4. Как да активирате улавянето на промяна на данни (CDC) в база данни в SQL Server - урок за SQL Server

  5. Примерна заявка за свързан сървър на SQL Server