Поделиться через


GETDATE (Transact-SQL)

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

Примечание

SYSDATETIME и SYSUTCDATETIME имеют большую точность в долях секунды, чем GETDATE и GETUTCDATE.SYSDATETIMEOFFSET включает смещение часового пояса, заданное в системе.SYSDATETIME, SYSUTCDATETIME и SYSDATETIMEOFFSET можно присваивать переменным любого типа даты и времени.

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

GETDATE ( )

Возвращаемый тип

datetime

Замечания

Инструкции Transact-SQL могут ссылаться на функцию GETDATE в любом месте, где они ссылаются на выражение datetime.

GETDATE является недетерминированной функцией. Невозможно проиндексировать представления и выражения, ссылающиеся на эту функцию в столбце.

Использование SWITCHOFFSET с функцией GETDATE() может привести к тому, что запрос будет выполняться медленно, потому что оптимизатор запросов не сможет получить точные оценки количества элементов для значений GETDATE. Рекомендуем предварительно вычислять значение GETDATE и затем указывать его в запросе, как показано в следующем примере. Кроме того, используйте указание запроса OPTION (RECOMPILE), чтобы заставить оптимизатор запросов перекомпилировать план запроса при следующем выполнении этого же запроса. Он будет иметь точные оценки количества элементов для GETDATE() и сформирует более эффективный план запроса.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00'); 
SELECT * FROM t  
WHERE c1 > @dt OPTION (RECOMPILE);

Примеры

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

А.Получение текущей системной даты и времени

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

Ниже приводится результирующий набор.

SYSDATETIME() 2007-04-30 13:10:02.0474381

SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00

SYSUTCDATETIME() 2007-04-30 20:10:02.0474381

CURRENT_TIMESTAMP 2007-04-30 13:10:02.047

GETDATE() 2007-04-30 13:10:02.047

GETUTCDATE() 2007-04-30 20:10:02.047

Б.Получение текущей системной даты

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

Ниже приводится результирующий набор.

SYSDATETIME() 2007-05-03

SYSDATETIMEOFFSET() 2007-05-03

SYSUTCDATETIME() 2007-05-04

CURRENT_TIMESTAMP 2007-05-03

GETDATE() 2007-05-03

GETUTCDATE() 2007-05-04

В.Получение текущего системного времени

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

Ниже приводится результирующий набор.

SYSDATETIME() 13:18:45.3490361

SYSDATETIMEOFFSET()13:18:45.3490361

SYSUTCDATETIME() 20:18:45.3490361

CURRENT_TIMESTAMP 13:18:45.3470000

GETDATE() 13:18:45.3470000

GETUTCDATE() 20:18:45.3470000

См. также

Справочник

Функции CAST и CONVERT (Transact-SQL)