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).
Najnowsze komentarze