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