SYSDATETIME()
funkcja zwraca bieżącą datę i godzinę jako datetime2(7) wartość. Ta wartość pochodzi z systemu operacyjnego komputera, na którym działa instancja SQL Server.
Ten artykuł zawiera przykłady SYSDATETIME()
funkcji, w tym jak możesz jej używać z innymi funkcjami, aby zwrócić interesującą Cię wartość.
Składnia
Po pierwsze, oto składnia:
SYSDATETIME ( )
Tak więc ta funkcja w rzeczywistości nie akceptuje żadnych argumentów. Po prostu nazywasz to bez żadnych argumentów.
Przykład
Oto podstawowy przykład użycia SELECT
instrukcja zwracająca bieżącą datę i godzinę z SYSDATETIME()
:
SELECT SYSDATETIME() AS Result;
Wynik:
+-----------------------------+ | Result | |-----------------------------| | 2018-06-15 23:09:13.5852199 | +-----------------------------+
Jak wspomniano, zwraca datetime2(7) wartość. data/godzina2 typ danych ma większy zakres dat i większą domyślną dokładność ułamkową niż data-godzina typ danych (który jest typem danych, który GETDATE()
zwraca – zobacz SYSDATETIME() vs GETDATE():Jaka jest różnica?).
Wyodrębnij część daty
Jeśli chcesz tylko część zwracanej wartości, możesz użyć DATEPART()
aby zwrócić tylko tę część daty/godziny, która Cię interesuje.
Przykład:
SELECT DATEPART(month, SYSDATETIME()) AS Result;
Wynik:
+----------+ | Result | |----------| | 6 | +----------+
Czasami istnieje więcej niż jeden sposób na uzyskanie tego samego wyniku w SQL Server. Oto kolejny przykład z użyciem MONTH()
funkcja:
SELECT MONTH(SYSDATETIME()) AS Result;
Wynik:
+----------+ | Result | |----------| | 6 | +----------+
Obie te funkcje zwróciły bieżący miesiąc. Ale zwrócili je jako liczbę całkowitą reprezentującą numer miesiąca.
Jeśli chcesz miesiąc nazwa zamiast tego zwrócone, możesz użyć DATENAME()
:
SELECT DATENAME(month, SYSDATETIME()) AS Result;
Wynik:
+----------+ | Result | |----------| | June | +----------+
Sformatuj datę
Możesz także użyć innych funkcji T-SQL, aby sformatować datę zgodnie z wymaganiami.
Oto przykład użycia FORMAT()
funkcja formatowania wyniku:
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';
Wynik:
+------------+------------+-----------------------+--------------+ | 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 | +------------+------------+-----------------------+--------------+
Więcej przykładów w Jak formatować datę i godzinę w SQL Server.
Zwiększanie wartości i znajdowanie różnicy
Możesz użyć funkcji takich jak DATEDIFF()
aby zwrócić różnicę między bieżącą datą a inną datą.
Oto przykład użycia DATEADD()
aby dodać miesiąc do bieżącej daty, a następnie sprawdzić różnicę w dniach:
DECLARE @date1 datetime2 = SYSDATETIME(); DECLARE @date2 datetime2 = DATEADD(month, 1, SYSDATETIME()); SELECT DATEDIFF(day, @date1, @date2) AS Result;
Wynik:
+----------+ | Result | |----------| | 30 | +----------+