Проблем:
Искате да получите текущата дата и час в T-SQL, но не искате изместването на часовата зона.
Решение:
Ще използваме GETDATE(), CURRENT_TIMESTAMP и SYSDATETIME(), за да получим текущата дата и час без изместване на часовата зона. Първите две функции ни позволяват да получим текущото време с по-ниска точност. (GETDATE() е T-SQL функция, докато CURRENT_TIMESTAMP е стандартна SQL функция; и двете функции връщат един и същ тип данни). Третата функция, SYSDATETIME(), получава време с по-висока точност.
SELECT CURRENT_TIMESTAMP ;
Ето резултата от заявката:
2019-08-14 10:01:06.983
Дискусия:
В база данни на SQL Server, CURRENT_TIMESTAMP
функцията връща текущата дата и час (т.е. часа на машината, където се изпълнява този екземпляр на SQL Server) като datetime
тип данни. Datetime
е време с по-ниска точност, което има максимум три части секунди. (В нашия пример това е 983.)
GETDATE() е подобен на CURRENT_TIMESTAMP
и връща същия резултат. Разликата е, че CURRENT_TIMESTAMP
е SQL стандарт, докато GETDATE() е специфичен за SQL Server.
SELECT GETDATE() ;
Разбира се, ако искате да получите текуща дата и час с по-висока точност без изместване на часовата зона, можете да използвате функцията SYSDATETIME(). Тази функция връща datetime2
тип данни със седем частни секунди. Вижте примера по-долу:
SELECT SYSDATETIME() ;
Ето резултата:
2019-08-14 10:01:06.9754163