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