W informatyce wszystkie przechowywane informacje mają z góry określony typ. Bazy danych są pod tym względem szczególne. Istnieje w nich wiele różnych typów tekstowych i liczbowych wykorzystywanych w różnych sytuacjach. Data i czas jest znacznie prostszy, więc stworzono znacznie mniej typów. Za to ilość operacji jest znacznie większa.

W bazach danych istnieją dwa typy daty i czasu:

DATETIME – wspiera zakres dat od 01-01-1753 do 31-12-9999 i przechowuje czas z dokładnością do 1/3 milisekundy

DATETIME2 – wspiera zakres dat od 01-01-0001 do 31-12-9999 i ma dokładniejszą precyzję – do 7 miejsc po przecinku

Do pobrania aktualnej daty możemy wykorzystać jedną z czterech funkcji:

GETDATE() – zwraca typ datetime

GETUTCDATE() – zwraca typ datetime jako UTC

SYSDATETIME() – funkcja wysokiej precyzji zwracająca typ datetime2

SYSUTCDATETIME() – zwraca typ datetime2 jako czas uniwersalny UTC

Do wyciągnięcia wybranego elementu daty służy kilka funkcji:

YEAR(data) – otrzymamy rok jako liczbę typu int

MONTH(data) – zwraca miesiąc jako typ integer

DAY(data) – wyciąga z daty dzień jako liczbę całkowitą typu int

DATEPART(parametr, data) – zaawansowana funkcja do pobierania wybranego elementu daty.  Parametr, który przyjmuje funkcja może przyjąć jedną z następujących postaci:
yy, yyyy – rok
q, qq – kwartał
m, mm – miesiąc
dy, y – dzień roku
dd, d – dzień
wk, ww – tydzień
dw – dzień tygodnia
hh – godzina
mi, n – minuta
ss, s – sekunda
ms – milisekunda
ns – nanosekunda


DATEADD(parametr, liczba, data) – ta funkcja służy do dodawania lub odejmowania określonych jednostek czasu. Jeśli chcemy odjąć datę, wystarczy podać liczbę ujemną. Jako parametr możemy podać:
yy, yyyy – rok
qq, q – kwartał
mm, m – miesiąc
dd, d – dzień
wk, ww – tydzień
hh – godzinę
mi, n – minutę
ss, s – sekunda
ms – milisekunda
ns – nanosekunda

DATEDIFF(parametr, data_początkowa, data_końcowa) – służy do obliczania różnicy między datami (data końcowa minus data początkowa). Zwracany wynik jest określany przez parametr i może on przyjąć takie same parametry jak funkcja DATEADD i DATEPART.

Ostatnia funkcja to DATENAME(parametr, data). Przyjmuje ona parametr taki sam jak pozostałe funkcje i zwraca słownie zadany element daty.

Wszystkie wymienione funkcje są funkcjami skalarnymi. Oznacza to, że dla pojedynczego wiersza zwracają pojedynczy wynik. Co za tym idzie można ich użyć w miejscach, gdzie pracujemy z wierszami: SELECT, WHERE, GROUP BY i ORDER BY (w HAVING też się da, ale prawie zawsze można wykonać tę operację podczas filtrowania wierszy, a nie grup).

Dołącz do newslettera już dziś!
Zero spamu - tylko wartościowe treści!
Musisz już lecieć?
Zostaw swój adres e-mail i dołącz do BEZPŁATNYCH WEBINARÓW dotyczących SQLa!
  • „Jak uczyć się SQLa?” – 4 października
  • „SQL dla testerów” – 12 października