Смещение по времени SYSDATE (Transact-SQL)

Область применения:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsБаза данных SQL в Microsoft Fabric

Функция SYSDATETIMEOFFSET Transact-SQL (T-SQL) возвращает значение datetimeoffset(7), содержащее дату и время работы компьютера, на котором работает экземпляр SQL Server. Смещение часового пояса включается.

Общие сведения обо всех Transact-SQL типах и функциях данных даты и времени см. в разделе "Типы и функции данных даты и времени".

Соглашения о синтаксисе Transact-SQL

Синтаксис

SYSDATETIMEOFFSET ( )

Типы возвращаемых данных

datetimeoffset(7)

Замечания

Функция SYSDATETIMEOFFSET может использоваться в инструкциях Transact-SQL везде, где допустимо использование выражения datetimeoffset.

Функция SYSDATETIMEOFFSET недетерминированная. Представления и выражения, ссылающиеся на эту функцию в столбце, не могут быть индексированы.

Примечание.

SQL Server получает значения даты и времени с помощью API Windows GetSystemTimeAsFileTime(). Точность зависит от оборудования компьютера и версии Windows, в которой выполняется экземпляр SQL Server. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс. Точность может быть определена с помощью метода GetSystemTimeAdjustment() интерфейса API Windows.

Примеры

В следующих примерах используются шесть системных функций SQL Server, возвращающих текущую дату и время для возврата даты, времени или обоих. Значения возвращаются последовательно и поэтому могут различаться на доли секунды.

А. Отображение форматов, возвращаемых функциями даты и времени

В следующем примере показаны различные идентификаторы, возвращаемые функциями даты и времени.

SELECT SYSDATETIME(),
       SYSDATETIMEOFFSET(),
       SYSUTCDATETIME(),
       CURRENT_TIMESTAMP,
       GETDATE(),
       GETUTCDATE(),
       CURRENT_DATE;

Вот результирующий набор.

SYSDATETIME()        2026-09-01 16:15:37.7418724
SYSDATETIMEOFFSET()  2026-09-01 16:15:37.7418724 -06:00
SYSUTCDATETIME()     2026-09-01 22:15:37.7418724
CURRENT_TIMESTAMP    2026-09-01 16:15:37.740
GETDATE()            2026-09-01 16:15:37.740
GETUTCDATE()         2026-09-01 22:15:37.740
CURRENT_DATE         2026-09-01

B. Преобразование даты и времени в дату

В следующем примере показано, как преобразовать значения даты и времени в тип date.

SELECT CONVERT (DATE, SYSDATETIME()),
       CONVERT (DATE, SYSDATETIMEOFFSET()),
       CONVERT (DATE, SYSUTCDATETIME()),
       CONVERT (DATE, CURRENT_TIMESTAMP),
       CONVERT (DATE, GETDATE()),
       CONVERT (DATE, GETUTCDATE()),
       CURRENT_DATE;

Вот результирующий набор.

SYSDATETIME()        2026-09-01
SYSDATETIMEOFFSET()  2026-09-01
SYSUTCDATETIME()     2026-09-01
CURRENT_TIMESTAMP    2026-09-01
GETDATE()            2026-09-01
GETUTCDATE()         2026-09-01
CURRENT_DATE         2026-09-01

В. Преобразовать дату и время в время

В следующем примере показано, как преобразовать значения даты и времени в тип time.

SELECT CONVERT (TIME, SYSDATETIME()),
       CONVERT (TIME, SYSDATETIMEOFFSET()),
       CONVERT (TIME, SYSUTCDATETIME()),
       CONVERT (TIME, CURRENT_TIMESTAMP),
       CONVERT (TIME, GETDATE()),
       CONVERT (TIME, GETUTCDATE());

Вот результирующий набор.

SYSDATETIME()        16:15:37.7418724
SYSDATETIMEOFFSET()  16:15:37.7418724
SYSUTCDATETIME()     22:15:37.7418724
CURRENT_TIMESTAMP    16:15:37.740
GETDATE()            16:15:37.740
GETUTCDATE()         22:15:37.740