CURRENT_TIMESTAMP
функцията връща текущата дата и час като datetime стойност. Тази стойност се извлича от операционната система на компютъра, на който се изпълнява екземплярът на SQL Server.
Тази функция е ANSI SQL еквивалент на T-SQL GETDATE()
функция, така че можете да използвате която предпочитате. Обърнете внимание, че и двете функции имат по-нисък диапазон от дати и по-ниска дробна точност по подразбиране от T-SQL SYSDATETIME()
функция (която връща datetime2(7) стойност).
Тази статия предоставя примери за CURRENT_TIMESTAMP
функция, включително как можете да я използвате с други функции, за да върнете стойността, която ви интересува.
Синтаксис
Синтаксисът е така:
CURRENT_TIMESTAMP
Така че просто извиквате тази функция без никакви аргументи.
Пример
Ето основен пример за използване на SELECT
оператор за връщане на текущата дата и час от CURRENT_TIMESTAMP
:
SELECT CURRENT_TIMESTAMP AS Result;
Резултат:
+-------------------------+ | Result | |-------------------------| | 2018-06-16 00:06:36.740 | +-------------------------+
Извличане на част от датата
Ако искате само част от върнатата стойност, можете да използвате DATEPART()
за да върнете само тази част от датата/часа, която ви интересува.
Пример:
SELECT DATEPART(month, CURRENT_TIMESTAMP) AS Result;
Резултат:
+----------+ | Result | |----------| | 6 | +----------+
Ето още един пример, използващ MONTH()
функция. Резултатът е същият.
SELECT MONTH(CURRENT_TIMESTAMP) AS Result;
Резултат:
+----------+ | Result | |----------| | 6 | +----------+
И двете функции връщат текущия месец. Но те ги връщат като цяло число, представляващо номера на месеца.
Ако искате име на месеца върнати вместо това, можете да използвате DATENAME()
:
SELECT DATENAME(month, CURRENT_TIMESTAMP) AS Result;
Резултат:
+----------+ | Result | |----------| | June | +----------+
Форматирайте датата
Можете също да използвате други функции на T-SQL, за да форматирате датата според изискванията.
Ето пример за използване на FORMAT()
функция за форматиране на резултата:
SELECT FORMAT(CURRENT_TIMESTAMP, 'd', 'en-US') AS 'd, en-US', FORMAT(CURRENT_TIMESTAMP, 'd', 'en-gb') AS 'd, en-gb', FORMAT(CURRENT_TIMESTAMP, 'D', 'en-US') AS 'D, en-US', FORMAT(CURRENT_TIMESTAMP, 'D', 'en-gb') AS 'D, en-gb';
Резултат:
+------------+------------+-------------------------+--------------+ | d, en-US | d, en-gb | D, en-US | D, en-gb | |------------+------------+-------------------------+--------------| | 6/16/2018 | 16/06/2018 | Saturday, June 16, 2018 | 16 June 2018 | +------------+------------+-------------------------+--------------+
Още примери в Как да форматирате датата и часа в SQL Server.
Увеличаване на стойността и намиране на разликата
Можете да използвате функции като DATEDIFF()
за да върнете разликата между текущата и друга дата.
Ето пример за използване на DATEADD()
за да добавите месец към текущата дата, след което да разберете разликата в дните:
DECLARE @date1 datetime2 = CURRENT_TIMESTAMP; DECLARE @date2 datetime2 = DATEADD(month, 1, CURRENT_TIMESTAMP); SELECT DATEDIFF(day, @date1, @date2) AS Result;
Резултат:
+----------+ | Result | |----------| | 30 | +----------+