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 | +----------+