SQL - Funkcje daty. Funkcje Transact-SQL Funkcje SQL umożliwiające pracę z datami

Uzyskiwanie aktualnej daty i godziny

Aby uzyskać aktualną datę (bez godziny) w formacie RRRR-MM-DD, możesz skorzystać z funkcji:

  • CZARNY()
  • BIEŻĄCA DATA()

Aby uzyskać aktualny czas (bez daty) w formacie GG:MM:SS można skorzystać z funkcji:

  • CURTIME()
  • OBECNY CZAS()

Aby uzyskać aktualną datę i godzinę w formacie RRRR-MM-DD GG:MM:SS, możesz skorzystać z dowolnej z poniższych funkcji:

  • TERAZ()
  • SYSDATA()
  • BIEŻĄCY_TIMESTAMP

Przykład 1

WYBIERZ BIEŻĄCY(); lub WYBIERZ BIEŻĄCĄ DATĘ();

Wynik: 28.08.2016

WYBIERZ PRZEJDŹ(); lub WYBIERZ BIEŻĄCY CZAS();

Wynik: 19:29:54

WYBIERZ TERAZ(); lub WYBIERZ SYSDATĘ(); lub WYBIERZ CURRENT_TIMESTAMP;

Wynik: 28.08.2016 19:29:54

Dodawanie i odejmowanie przedziału czasu

W przypadku dat i godzin często trzeba wykonać operacje arytmetyczne: dodać lub odjąć określony przedział czasu do danej daty. Dodanie przedziału czasowego można wykonać na trzy sposoby:

  • Funkcjonować DATE_ADD(data_pierwotna, typ wyrażenia INTERVAL);
  • Funkcjonować ADDDATE(data_oryginalna, typ wyrażenia INTERVAL);
  • Wyrażenie: data_źródłowa + typ wyrażenia INTERVAL.

Odejmowanie przedziału czasu można również wykonać na trzy sposoby:

  • Funkcjonować DATE_SUB(data_źródłowa, typ wyrażenia INTERVAL);
  • Funkcjonować SUBDATE(data_źródłowa, typ wyrażenia INTERVAL);
  • Wyrażenie: data_źródłowa - typ wyrażenia INTERVAL.

Data_źródła to data, do której dodaje się lub odejmuje określony przedział czasu. Wyrażenie– jest to sam dodany lub odjęty przedział czasu, podany w formacie tekstowym. Typ– argument wskazujący rodzaj dodawanego przedziału. Ta opcja określa, jak poprawnie interpretować wyrażenie. Na przykład wyrażenie „3:24” można interpretować jako 3 godziny 24 minuty lub 3 minuty 24 sekundy. Jeżeli zostanie podany typ „MINUTE_SECOND”, wówczas interpretacja będzie jednoznaczna. Zależność pomiędzy argumentami wyrażenia i typu pokazano w tabeli:

Przykład 2

Następne trzy polecenia wykonują tę samą operację. Do podanego czasu dodają sekundę.

WYBIERZ „2016-09-10 23:59:59” + interwał 1 sekunda;

WYBIERZ DODATKĘ("2016-09-10 23:59:59", Interwał 1 SEKUNDA);

WYBIERZ DATĘ_ADD("2016-09-10 23:59:59", interwał 1 SEKUNDA);

Wynik wszystkich trzech drużyn jest taki sam: 2016-09-11 00:00:00.

Przykład 3

Poniższe trzy polecenia obliczają datę przypadającą dokładnie półtora roku wcześniej niż podana:

WYBIERZ DATE_SUB("2016-09-10 23:59:59", Przedział "1-6" ROK_MIESIĄC);

WYBIERZ PODDATĘ("2016-09-10 23:59:59", Przedział "1-6" ROK_MIESIĄC);

WYBIERZ „2016-09-10 23:59:59” – Przedział „1-6” ROK_MIESIĄC;

Wynik wszystkich trzech drużyn jest taki sam: 2015-03-10 23:59:59.

Funkcje konwersji na inne jednostki

Czasami wygodniej jest pracować z datą przedstawioną jako liczba dni, które minęły od roku 0. Aby przekonwertować datę do tego formatu i z powrotem do MySQL, dostępne są dwie funkcje:

  • Dzisiejsza data) – zwraca numer dnia odpowiadający argumentowi date.
  • FROM_DAYS(numer dnia)– zwraca datę zgodnie z numerem dnia.

Od autora: Dzisiaj porozmawiamy o tym, jak działają funkcje daty w SQL. Poniższa tabela zawiera listę wszystkich dostępnych ważnych funkcji daty i godziny. Istnieją inne obsługiwane przez różne systemy DBMS. Ta lista przedstawia funkcje dostępne w systemie DBMS MySQL.

DODAJ(). Dodaje daty

DODAJ CZAS(). Dodaje czas

KONWERTUJ_TZ(). Konwertuje z jednej strefy czasowej na inną

CURDATY(). Zwraca bieżącą datę

BIEŻĄCA DATA(), BIEŻĄCA DATA. Synonimy dla CURDATE()

BIEŻĄCY CZAS(), BIEŻĄCY CZAS. Synonimy dla CURTIME()

BIEŻĄCY_TIMESTAMP(), BIEŻĄCY_TIMESTAMP. Synonimy dla TERAZ()

CURTIME(). Zwraca bieżący czas

DATA_ADD(). Dodaje dwie daty

FORMAT DATY(). Ustawia określony format daty

DATA_SUB(). Odejmuje jedną datę od drugiej

DATA(). Wyodrębnia część daty z wyrażenia reprezentującego datę lub godzinę i datę

RÓŻNA DATY(). Odejmuje jedną datę od drugiej

DZIEŃ(). Synonimy dla DZIEŃMIESIĄCA()

NAZWA DNIA(). Zwraca dzień tygodnia

DZIEŃMONT(). Zwraca dzień miesiąca (1-31)

DZIEŃ TYGODNIA(). Zwraca indeks dnia tygodnia argumentu

DZIEŃROKU(). Zwraca numer dnia w roku (1-366)

WYCIĄG. Pobiera część daty

OD_DAYS(). Konwertuje numer dnia na datę

OD_UNIXTIME(). Formatuje datę jako znacznik czasu UNIX

GODZINA(). Pobiera godzinę

OSTATNI DZIEŃ. Zwraca ostatni dzień miesiąca dla argumentu

CZAS LOKALNY(), CZAS LOKALNY. synonim TERAZ()

LOCALTIMESTAMP, LOCALTIMESTAMP(). synonim TERAZ()

DATA DATA(). Tworzy datę na podstawie roku i dnia roku

CZAS. CZAS MAKOWANIA(). MIKROSEKUNDA(). Zwraca mikrosekundy z argumentu

MINUTA(). Zwraca minuty od argumentu

MIESIĄC(). Zwracanie miesiąca z daty

NAZWA MIESIĄCA(). Zwraca nazwę miesiąca

TERAZ(). Zwraca bieżącą datę i godzinę

OKRES_ADD(). Dodaje kropkę do roku-miesiąca

OKRES_DIFF(). Zwraca liczbę miesięcy pomiędzy okresami

KWARTAŁ(). Zwraca kwartał z argumentu

SEC_TO_TIME(). Konwertuje sekundy na format „GG:MM:SS”.

DRUGI(). Zwraca sekundy (0-59)

STR_TO_DATE(). Konwertuje ciąg na datę

PODDATA(). Gdy zostanie wywołany z trzema argumentami, synonim DATE_SUB().

PODCZAS(). Odejmuje czas

SYSDATA(). Zwraca czas wykonania funkcji

FORMAT CZASU(). Ustawia format czasu

CZAS_TO_SEC(). Zwraca argument przekonwertowany na sekundy

CZAS(). Wyodrębnia część czasu przekazanego wyrażenia

Różnica Czasu(). Odejmuje czas

ZNAK CZASU(). Z jednym argumentem funkcja ta zwraca wyrażenie typu data lub data/godzina. Z dwoma argumentami - dodaje te dwa argumenty

TIMESTAMPADD(). Dodaje interwał do wyrażenia daty i godziny

ZNACZNIK CZASOWY(). Odejmuje interwał od wyrażenia typu datetime

DO_DAYS(). Zwraca argument daty przekonwertowany na dni

UNIX_TIMESTAMP(). Zwraca znacznik czasu UNIX

UTC_DATA(). Zwraca bieżącą datę UTC

CZAS_UTC_(). Zwraca bieżący czas UTC

UTC_TIMESTAMP(). Zwraca bieżącą datę i godzinę UTC

TYDZIEŃ(). Zwraca numer tygodnia

DZIEŃ POWSZEDNI(). Zwraca indeks dnia tygodnia

TYDZIEŃROK(). Zwraca numer tygodnia kalendarzowego (1-53)

ROK(). Zwraca rok

TYDZIEŃ ROCZNY(). Zwraca rok i tydzień

DODAJ(data,interwał jednostka wyr), DODAJ(wyraż,dni)

Funkcja ADDDATE() wywoływana z drugim argumentem określonym jako INTERVAL jest synonimem DATE_ADD(). Powiązana funkcja SUBDATE() jest synonimem DATE_SUB(). Aby uzyskać informacje na temat argumentu bloku INTERVAL, zobacz DATE_ADD().

Wywołany z drugim argumentem podanym w dniach, MySQL traktuje to jako liczbę całkowitą dni, które należy dodać do wyrażenia.

CZAS DODAWANIA(wyrażenie1,wyrażenie2)

ADDTIME() dodaje wyrażenie2 do wyrażenia1 i zwraca wynik. Wyrażenie1 jest wyrażeniem czasu lub daty i godziny, natomiast wyrażenie2 jest wyrażeniem czasu.

CONVERT_TZ(dt,od_tz,do_tz)

Konwertuje wartość daty i godziny dt ze strefy czasowej określonej w from_tz na strefę czasową określoną w to_tz i zwraca wartość wynikową. Ta funkcja zwraca NULL, jeśli argumenty są nieprawidłowe.

CZARNY()

Zwraca bieżącą datę jako wartość w formacie „RRRR-MM-DD” lub RRRRMMDD, w zależności od tego, czy funkcja ta jest używana w kontekście łańcuchowym czy liczbowym.

CURRENT_DATE i CURRENT_DATE()

CURRENT_DATE i CURRENT_DATE() są synonimami CURDATE()

CURTIME()

Zwraca bieżący czas jako wartość w formacie „GG:MM:SS” lub GGGMMSS, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym, czy numerycznym. Wartość jest wyrażona dla bieżącej strefy czasowej.

CURRENT_TIME i CURRENT_TIME()

CURRENT_TIME i CURRENT_TIME() są synonimami CURTIME().

CURRENT_TIMESTAMP i CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP i CURRENT_TIMESTAMP() są synonimami TERAZ().

DATA (wyr)

Pobiera część daty wyrażenia daty lub daty i godziny.

RÓŻNA DATY(wyrażenie1,wyrażenie2)

DATEDIFF() zwraca wyrażenie1.wyrażenie2 wyrażone jako liczba dni pomiędzy dwiema datami. Zarówno wyrażenie1, jak i wyrażenie2 są wyrażeniami typu data lub datetime. W obliczeniach wykorzystywane są wyłącznie części daty.

DATE_ADD(data,jednostka wyr.INTERVAL), DATE_SUB(data,jednostka wyr.INTERVAL)

Funkcje te wykonują operacje arytmetyczne na datach. data jest reprezentowana jako wartość DATETIME lub DATE wskazująca datę początkową. wyrażenie to wyrażenie określające wartość interwału, którą należy dodać lub odjąć od oryginalnej daty. wyrażenie jest ciągiem znaków; może zaczynać się od „-” dla odstępów ujemnych.

jednostka to słowo kluczowe określające jednostki miary wyrażenia. W słowie kluczowym INTERVAL i zapisie jednostek wielkość liter nie jest uwzględniana. W poniższej tabeli przedstawiono oczekiwaną formę argumentu wyrażenie dla każdej wartości jednostkowej.

Wartości Kwartał i TYDZIEŃ są dostępne w MySQL od wersji 5.0.0.

DATE_FORMAT (data,format)

To polecenie formatuje wartość daty zgodnie z określonym ciągiem formatującym. W linii formatu można zastosować następujące wskaźniki. Wskaźniki formatu muszą być poprzedzone znakiem „%”.

%A. Skrócona nazwa dnia tygodnia (niedziela.sobota)

%B. Skrócona nazwa miesiąca (styczeń..grudzień)

%Z. Numeryczne oznaczenie miesiąca (0…12)

%D. Dzień miesiąca z angielskim przyrostkiem (0, 1, 2, 3,.)

%D. Numeryczne oznaczenie dnia miesiąca (00..31)

%mi. Numeryczne oznaczenie dnia miesiąca (00..31)

%F. Mikrosekundy (000000..999999)

%H. Godzina (00..23)

%H. Godzina (01..12)

%I. Godzina (01..12)

%I. Numeryczne oznaczenie minut (00..59)

%J. Dzień roku (001..366)

% k. Godzina (0..23)

%l. Godzina (1..12)

%M. Nazwa miesiąca (styczeń..grudzień)

%M. Numeryczne oznaczenie miesiąca (00..12)

%R. Rano albo wieczorem

%R. Godzina, format 12-godzinny (gg:mm:ss, po którym następuje AM lub PM)

%S. Sekundy (00..59)

%S. Sekundy (00..59)

%T. Godzina, format 24-godzinny (gg:mm:ss)

%U. Tydzień (00..53), gdzie niedziela jest pierwszym dniem tygodnia

%u. Tydzień (00..53), gdzie poniedziałek jest pierwszym dniem tygodnia

%V. Tydzień (01..53), gdzie niedziela jest pierwszym dniem tygodnia; używany z %X

%v. Tydzień (01..53), gdzie poniedziałek jest pierwszym dniem tygodnia; używany z %x

%W. Nazwa dnia tygodnia (niedziela..sobota)

%w. Dzień tygodnia (0=niedziela..6=sobota)

%X. Rok oznaczający tydzień, w którym pierwszym dniem tygodnia jest niedziela, liczba czterocyfrowa; używany z %V

%X. Rok oznaczający tydzień, w którym pierwszym dniem tygodnia jest poniedziałek, liczba czterocyfrowa; używany z %V

%Y. Rok, data, cztery cyfry

%y. Numeryczne oznaczenie roku (dwie cyfry)

%%. Dosłownie symbol %

%X. x, dla wszystkich.x niewymienionych powyżej

DATE_SUB(data,INTERVAL jednostka wyrażenia)

Podobna do funkcji DATE_ADD().

Data dnia)

DZIEŃ() jest synonimem funkcji DZIEŃMIESIĄC().

NAZWA DNIA(data)

Zwraca dzień tygodnia dla określonej daty.

DZIEŃMIESIĄCA(data)

Zwraca dzień miesiąca dla określonej daty z zakresu od 0 do 31.

DZIEŃTYGODNIA(data)

Zwraca indeks dnia tygodnia (1 = niedziela, 2 = poniedziałek, ., 7 = sobota). Te wartości indeksów są zgodne ze standardem ODBC.

DZIEŃROKU(data)

Zwraca dzień roku dla określonej daty z zakresu od 1 do 366.

WYCIĄG (jednostka OD daty)

Funkcja EXTRACT() wykorzystuje te same typy wskaźników jednostek co DATE_ADD() lub DATE_SUB(), ale nie wykonuje operacji arytmetycznych na datach, lecz wyodrębnia część daty stanowiącą wskaźnik jednostki.

OD_DAYS(N)

Zwracana jest wartość DATE, biorąc pod uwagę liczbę dni N.

Notatka. Ostrożnie używaj funkcji FROM_DAYS() w przypadku starych dat. Funkcja nie jest przeznaczona do pracy z wartościami dat sprzed wprowadzenia kalendarza gregoriańskiego (1582).

FROM_UNIXTIME(znacznik czasu_unix), FROM_UNIXTIME(znacznik czasu_unix,format)

Zwraca reprezentację argumentu unix_timestamp jako wartość w formacie „RRRR-MM-DD HH:MM:SS lub RRRRMDDHHMMSS” w zależności od tego, czy ta funkcja jest używana w kontekście łańcuchowym czy liczbowym. Wartość wyrażona jest w bieżącej strefie czasowej. Parametr unix_timestamp jest wewnętrzną wartością znacznika czasu generowaną przez funkcję UNIX_TIMESTAMP().

Jeśli określono format, wynik jest formatowany zgodnie z ciągiem formatującym, którego używa się w taki sam sposób, jak opisano w sekcji DATE_FORMAT().

GODZINA(czas)

Zwraca godziny z określonego czasu. Zakres zwracanej wartości wynosi od 0 do 23. Jednak zakres wartości CZASU jest w rzeczywistości znacznie większy, więc GODZINA może zwracać wartości większe niż 23.

LAST_DAY(data)

Pobiera wartość daty lub godziny i zwraca wartość odpowiadającą ostatniemu dniu miesiąca. Zwraca NULL, jeśli argument jest nieprawidłowy.

CZAS LOKALNY i CZAS LOKALNY()

LOCALTIME i LOCALTIME() są synonimami TERAZ().

LOCALTIMESTAMP i LOCALTIMESTAMP()

LOCALTIMESTAMP i LOCALTIMESTAMP() są synonimami TERAZ().

MAKEDATE(rok,dzieńroku)

Zwraca wartości daty, określonego roku i dnia roku. Wartość dnia roku musi być większa niż 0, w przeciwnym razie wynikiem będzie NULL.

CZAS WYKONANIA(godzina,minuta,sekunda)

Zwraca wartość czasu obliczoną na podstawie argumentów godzina, minuta i sekunda.

MIKROSEKUNDA(wyrażenie)

Zwraca mikrosekundy z wyrażenia czasu lub wyrażenia datetime(expr) jako liczbę z zakresu od 0 do 999999.

MINUTA(czas)

Zwraca minuty dla określonego czasu w zakresie od 0 do 59.

MIESIĄC(data)

Zwraca miesiąc dla określonej daty z zakresu od 0 do 12.

NAZWA MIESIĄCA(data)

Zwraca pełną nazwę miesiąca dla określonej daty.

TERAZ()

Zwraca bieżącą datę i godzinę jako wartość w formacie „RRRR-MM-DD GG:MM:SS” lub RRRRMDDHHMMSS, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym, czy liczbowym. Wartość ta jest wyrażona w bieżącej strefie czasowej.

OKRES_ADD(P,N)

Dodaje N miesięcy do okresu P (w formacie RRMM lub RRRRMM). Zwraca wartość w formacie RRRRMM. Należy zauważyć, że argument kropka P nie jest wartością daty.

OKRES_DIFF(P1,P2)

Zwraca liczbę miesięcy pomiędzy okresami P1 i P2. Okresy P1 i P2 należy podać w formacie RRMM lub RRRRMM. Należy zauważyć, że argumenty kropki P1 i P2 nie są wartościami dat.

Kwartał(data)

Zwraca kwartał roku dla określonej daty z zakresu od 1 do 4.

Drugi raz)

Zwraca wartość sekund dla czasu z zakresu od 0 do 59.

SEC_TO_TIME(sekundy)

Zwraca argument sekundy przekonwertowany na godziny, minuty i sekundy w formacie „GG:MM:SS” lub GGMMSS, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym czy liczbowym.

STR_TO_DATE(str,format)

Jest to odwrotność funkcji DATE_FORMAT(). Akceptuje ciąg znaków i format ciągu formatu. Funkcja STR_TO_DATE() zwraca DATETIME, jeśli ciąg formatujący zawiera zarówno datę, jak i godzinę. W przeciwnym razie zwraca DATĘ lub CZAS, jeśli ciąg zawiera tylko datę lub godzinę.

SUBDATE(data,INTERVAL jednostka wyr.) i SUBDATE(wyr.dni)

Jeśli wywołana zostanie funkcja SUBDATE() z drugim argumentem określonym jako INTERVAL, funkcja będzie synonimem DATE_SUB(). Aby uzyskać informacje na temat argumentu INTERVAL, zobacz DATE_ADD().

PODCZAS(wyrażenie1,wyrażenie2)

Funkcja SUBTIME() zwraca wyrażenie1. wyrażenie2 jest wyrażane jako wartość w tym samym formacie co wyrażenie1. Wartość wyrażenie1 jest wyrażeniem czasu lub daty i godziny, a wartość wyrażenie2 jest wyrażeniem czasu.

SYSDATA()

Zwraca bieżącą datę i godzinę jako wartość w formacie „RRRR-MM-DD GG:MM:SS” lub RRRRMDDHHMMSS, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym, czy liczbowym.

CZAS(wyraż)

Wyodrębnia część czasową wyrażenia i zwraca ją jako ciąg znaków.

RÓŻNICA CZASOWA(wyrażenie1,wyrażenie2)

TIMEDIFF() zwraca wyrażenie1. wyrażenie2 wyrażane jest jako wartość czasu. Wartości wyrażenie1 i wyrażenie2 są wyrażeniami czasu lub daty/godziny, ale oba muszą być tego samego typu.

ZNACZNIK CZASOWY (wyrażenie), ZNACZNIK CZASOWY (wyrażenie1, wyrażenie2)

Po określeniu jednego argumentu ta funkcja zwraca wyrażenie daty lub daty/godziny jako wartość typu datetime. W przypadku dwóch argumentów dodaje wyrażenie czasu wyrażenie2 do wyrażenia daty lub wyrażenia daty/godziny wyrażenie1 i zwraca wynik jako wartość typu data/godzina.

TIMESTAMPADD(jednostka,przedział,wyrażenie_data/godzina)

Ta funkcja dodaje wyrażenie przedziału całkowitego do wyrażenia daty lub godziny datetime_expr. Jednostki przedziału są określone przez argument unit, który może przyjmować jedną z następujących wartości:

Wartość jednostki można określić za pomocą jednego ze słów kluczowych pokazanych powyżej lub za pomocą przedrostka SQL_TSI_. Na przykład DAY i SQL_TSI_DAY są prawidłowymi wartościami.

TIMESTAMPDIFF(jednostka,wyrażenie_data_godzina1,wyrażenie_datagodzina2)

Zwraca różnicę całkowitą między wyrażeniami typu datetime lub datetime datetime_expr1 i datetime_expr2. Jednostki miary wyniku są określone przez argument jednostki. Poprawne wartości argumentu jednostka są takie same, jak te wymienione w funkcji TIMESTAMPADD().

TIME_FORMAT(czas,format)

Tej funkcji używa się w taki sam sposób, jak funkcji DATE_FORMAT(), ale ciąg formatujący może zawierać tylko specyfikatory formatu dla godzin, minut i sekund.

Jeśli wartość czasu zawiera część godzinową większą niż 23, wskaźniki formatu zegara %H i %k dają wartość większą niż normalny zakres od 0 do 23. Inne wskaźniki formatu zegara dają wartość modulo 12 godzin.

TIME_TO_SEC(czas)

Zwraca argument czasu przekonwertowany na sekundy.

Dzisiejsza data)

Zwraca numer dnia (liczbę dni od roku 0) dla podanej daty date.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(data)

Jeśli ta funkcja zostanie wywołana bez argumentu, zwróci znacznik czasu Uniksa (sekundy od „1970-01-01 00:00:00” UTC) jako dodatnią liczbę całkowitą. Jeśli UNIX_TIMESTAMP() zostanie wywołana z argumentem daty, zwraca wartość argumentu wyrażoną w sekundach od „1970-01-01 00:00:00” UTC. data może być ciągiem DATA, ciągiem DATETIME, znacznikiem TIMESTAMP lub liczbą w formacie RRMMDD lub RRRRMMDD.

UTC_DATE, UTC_DATE()

Zwraca bieżącą datę UTC jako wartość w formacie „RRRR-MM-DD” lub RRRRMMDD, w zależności od tego, czy funkcja ta jest używana w kontekście łańcuchowym czy liczbowym.

UTC_TIME, UTC_TIME()

Zwraca bieżący czas UTC jako wartość w formacie „GG:MM:SS” lub GGGMMSS, w zależności od tego, czy funkcja jest używana w kontekście łańcuchowym czy liczbowym.

UTC_TIMESTAMP, UTC_TIMESTAMP()

Zwraca bieżącą datę i godzinę UTC jako wartość „RRRR-MM-DD HH:MM:SS” lub w formacie YYYYMMDDHHMMSS, w zależności od tego, czy funkcja ta jest używana w kontekście łańcuchowym czy liczbowym.

TYDZIEŃ(data[,tryb])

Funkcja ta zwraca numer tygodnia dla podanej daty. Dwuargumentowa forma WEEK() pozwala określić, czy tydzień zaczyna się w niedzielę czy w poniedziałek i czy zwracana wartość powinna mieścić się w przedziale od 0 do 53, czy od 1 do 53. Jeżeli argument mode zostanie pominięty, wartość używana jest zmienna systemowa default_week_format

DZIEŃ TYGODNIA(data)

Zwraca indeks dnia tygodnia dla podanej daty (0 = poniedziałek, 1 = wtorek, 6 = niedziela).

TYDZIEŃROK(data)

Zwraca tydzień kalendarzowy dla podanej daty jako liczbę z zakresu od 1 do 53. TYDZIEŃ.ROK() jest funkcją zgodności równoważną funkcji TYDZIEŃ(data,3).

ROK (data)

Zwraca rok dla podanej daty z zakresu od 1000 do 9999 lub 0 dla daty zero.

TYDZIEŃ ROKU(data), TYDZIEŃ ROKU(data,tryb)

Zwraca rok i tydzień dla podanej daty. Argument mode działa dokładnie tak samo, jak argument mode funkcji WEEK(). Wynikowy rok może różnić się od roku podanego w argumencie daty pierwszego i ostatniego tygodnia roku.

Notatka. Numer tygodnia różni się od tego, co WEEK() zwróci (0) dla opcjonalnych argumentów 0 lub 1, ponieważ WEEK() zwróci tydzień w kontekście danego roku.

Ostatnia aktualizacja: 29.07.2017

T-SQL udostępnia szereg funkcji do pracy z datami i godzinami:

    GETDATE: Zwraca bieżącą lokalną datę i godzinę w oparciu o zegar systemowy jako obiekt typu datetime

    WYBIERZ POBIERZ DATĘ() -- 28.07.2017 21:34:55.830

    GETUTCDATE : Zwraca bieżącą lokalną datę i godzinę według czasu Greenwich (UTC/GMT) jako obiekt typu datetime

    WYBIERZ GETUTCDATE() -- 2017-07-28 18:34:55.830

    SYSDATETIME: Zwraca bieżącą lokalną datę i godzinę na podstawie zegara systemowego, ale różni się od GETDATE tym, że data i godzina są zwracane jako obiekt datetime2

    WYBIERZ SYSDATETIME() -- 2017-07-28 21:02:22.7446744

    SYSUTCDATETIME : Zwraca bieżącą lokalną datę i godzinę według czasu Greenwich (UTC/GMT) jako obiekt datetime2

    WYBIERZ SYSUTCDATETIME() -- 2017-07-28 18:20:27.5202777

    SYSDATETIMEOFFSET: zwraca obiekt datetimeoffset(7), który zawiera datę i godzinę względem GMT

    WYBIERZ SYSDATETIMEOFFSET() -- 2017-07-28 21:02:22.7446744 +03:00

    DZIEŃ: zwraca dzień daty przekazanej jako parametr

    WYBIERZ DZIEŃ(GETDATA()) -- 28

    MIESIĄC: zwraca miesiąc daty

    WYBIERZ MIESIĄC(GETDATA()) -- 7

    ROK: zwraca rok z daty

    WYBIERZ ROK(GETDATA()) -- 2017

    NAZWA DATA: Zwraca część daty jako ciąg znaków. Parametr wyboru części daty jest przekazywany jako pierwszy parametr, a sama data jako drugi parametr:

    WYBIERZ NAZWĘ DATA(miesiąc, GETDATA()) -- lipiec

    Aby określić część daty, możesz skorzystać z następujących parametrów (w nawiasach podano ich skrócone wersje):

    • rok (yy, yyyy): rok

      kwartał (qq, q): kwartał

      miesiąc (mm, m): miesiąc

      dayofyear (dy, y): dzień roku

      dzień (dd, d): dzień miesiąca

      tydzień (tydzień, ww): tydzień

      dzień tygodnia (dw): dzień tygodnia

      godzina (gg): godzina

      minuta (mi, n): minuta

      sekunda (ss, s): sekunda

      milisekunda (ms): milisekunda

      mikrosekunda (mcs): mikrosekunda

      nanosekunda (ns): nanosekunda

      tzoffset (tz): przesunięcie w minutach względem GMT (dla obiektu datetimeoffset)

    DATEPART: Zwraca część daty jako liczbę. Jako pierwszy parametr przekazywany jest parametr wyboru części daty (używane są te same parametry co w przypadku DATENAME), a jako drugi parametr przekazywana jest sama data:

    WYBIERZ DATECZĘŚĆ(miesiąc, GETDATE()) -- 7

    DATEADD: Zwraca datę będącą wynikiem dodania liczby do określonego składnika daty. Pierwszy parametr reprezentuje składnik daty opisany powyżej dla funkcji DATENAME. Drugim parametrem jest ilość do dodania. Trzecim parametrem jest sama data, do której należy dodać:

    WYBIERZ DATĘDODAW(miesiąc, 2, "2017-7-28") -- 2017-09-28 00:00:00.000 WYBIERZ DATĘDODAĆ(dzień, 5, "2017-7-28") -- 2017-08-02 00 :00:00.000 WYBIERZ DODATKĘ(dzień, -5, "2017-7-28") -- 2017-07-23 00:00:00.000

    Jeśli dodana ilość jest liczbą ujemną, wówczas data jest faktycznie zmniejszana.

    DATEDIFF: Zwraca różnicę między dwiema datami. Pierwszym parametrem jest składnik daty, który wskazuje, w jakich jednostkach należy mierzyć różnicę. Drugi i trzeci parametr to porównywane daty:

    SELECT DATEDIFF(rok, "2017-7-28", "2018-9-28") -- różnica 1 rok SELECT DATEDIFF(miesiąc, "2017-7-28", "2018-9-28") -- różnica 14 miesięcy WYBIERZ DATEDIFF(dzień, "2017-7-28", "2018-9-28") -- różnica 427 dni

    TODATETIMEOFFSET : Zwraca wartość przesunięcia daty i czasu, która jest wynikiem dodania przesunięcia czasu do innego obiektu przesunięcia daty i czasu

    WYBIERZ PRZESUNIĘCIE TODATAGODZINY("2017-7-28 01:10:22", "+03:00")

    SWITCHOFFSET: Zwraca wartość datetimeoffset, która jest wynikiem dodania przesunięcia czasu do obiektu datetime2

    WYBIERZ PRZESUNIĘCIE PRZEŁĄCZENIA(SYSDATETIMEOFFSET(), "+02:30")

    EOMONTH : Zwraca datę ostatniego dnia miesiąca użytego w dacie przekazanej jako parametr.

    WYBIERZ EOMONTH("2017-02-05") -- 2017-02-28 WYBIERZ EOMONTH("2017-02-05", 3) -- 2017-05-31

    Jako opcjonalny drugi parametr możesz podać liczbę miesięcy, które należy dodać do daty. Wtedy dla nowej daty zostanie wliczony ostatni dzień miesiąca.

    DATEFROMPARTS: według roku, miesiąca i dnia tworzy datę

    WYBIERZ DATĘ Z CZĘŚCI (2017, 7, 28) -- 28.07.2017

    ISDATE: Sprawdza, czy wyrażenie jest datą. Jeśli tak, zwraca 1, w przeciwnym razie zwraca 0.

    WYBIERZ ISDATE("2017-07-28") -- 1 WYBIERZ ISDATE("28-2017") -- 0 WYBIERZ ISDATE("07-28-2017") -- 0 WYBIERZ ISDATE("SQL") - - 0

Przykładem wykorzystania funkcji jest utworzenie tabeli zamówień zawierającej datę zamówienia:

UTWÓRZ TABELĘ Zamówienia (Id INT IDENTITY KLUCZ PODSTAWOWY, Identyfikator produktu INT NIE NULL, Identyfikator klienta INT NIE NULL, CreatedAt DATE NIE NULL DEFAULT GETDATE(), ProductCount INT DEFAULT 1, Cena MONEY NIE NULL);

Wyrażenie DEFAULT GETDATE() określa, że ​​jeśli podczas dodawania danych nie zostanie podana żadna data, zostanie ona automatycznie obliczona przy użyciu funkcji GETDATE().

Inny przykład - znajdźmy zamówienia złożone 16 dni temu:

WYBIERZ * Z zamówień WHERE DATEDIFF(dzień, CreatedAt, GETDATE()) = 16

Pozdrowienia, drodzy czytelnicy bloga. Baza danych często wymaga przechowywania różnych danych związanych z datą i godziną. Może to być data dodania informacji, data rejestracji użytkownika, godzina ostatniej autoryzacji i inne dane. W Język SQL Istnieje wiele funkcji związanych z datą i godziną, dlatego dzisiaj przyjrzymy się im.

Wszystkie funkcje omówione poniżej działają z typami danych kalendarza.

Uzyskiwanie aktualnej daty i godziny.

Pozyskać aktualna data i godzina funkcja jest używana TERAZ().

WYBIERZ TERAZ()
Wynik: 25.09.2015 14:42:53

Tylko do odbioru bieżąca data istnieje funkcja CZARNY().

WYBIERZ BIEŻĄCY()
Wynik: 25.09.2015

I funkcja CURTIME(), która tylko zwraca Obecny czas:

WYBIERZ PRZEJDŹ()
Wynik: 14:42:53

Funkcje CURDATE() i NOW() są przydatne do dodawania rekordów do bazy danych, w której chcesz przechowywać datę ich dodania. Przykładowo, dodając artykuł na stronę internetową, dobrym pomysłem byłoby zapisanie daty jego publikacji. Wtedy prośba o dodanie artykułu do bazy będzie wyglądać mniej więcej tak:

WSTAW DO postów (id_post, tekst_post, date_publication) WARTOŚCI (1, „tekst artykułu”, TERAZ ());

Dodawanie i odejmowanie dat i godzin

Funkcjonować ADDDATE (data, wartość INTERVAL) dodaje na bieżąco data oznaczający wartość i zwraca wynikową wartość. Jako wartość można zastosować następujące wartości:

  • DRUGI - sekundy
  • MINUTA - minuty
  • GODZINA - godziny
  • DZIEŃ - dni
  • TYDZIEŃ - tygodnie
  • MIESIĄC - miesiące
  • ĆWARTOŚĆ - bloki
  • ROK - lata

a także ich kombinacje:

  • MINUTE_SECOND – minuty i sekundy
  • HOUR_SECOND godziny - minuty i sekundy
  • HOUR_MINUTE – godziny i minuty
  • DAY_SECOND – dni, godziny, minuty i sekundy
  • DAY_MINUTE – dni, godziny i minuty
  • DAY_HOUR – dni i godziny
  • YEAR_MONTH – lata i miesiące.

WYBIERZ DODATKĘ („2015-09-28 10:30:20”, INTERWAŁ 1 DZIEŃ)
Wynik: 29.09.2015, 10:30:20

WYBIERZ DODATKĘ („2015-09-28 10:30:20”, INTERWAŁ „3 1:20” DAY_MINUTE)
Wynik: 2015-10-01 11:50:20

Funkcjonować SUBDATE (data, wartość INTERVAL) produkuje odejmowanie wartości od daty data. Przykład:

WYBIERZ PODDATĘ („2015-09-28 10:30:20”, INTERWAŁ 20 GODZIN)
Wynik: 27.09.2015 14:30:20

Funkcjonować OKRES_ADD(kropka, n) dodaje do okresu wartości n miesiące. Wartość okresu musi być w formacie RRRRMM (na przykład wrzesień 2015 będzie miał wartość 201509). Przykład:

WYBIERZ OKRES_ADD (201509, 4)
Wynik: 201601

Funkcjonować TIMESTAMPADD(interwał, n, data) dodaje na bieżąco data Przedział czasowy n, którego wartości określa parametr interwału. Możliwe wartości parametru interwału:

  • FRAC_SECOND – mikrosekundy
  • DRUGI - sekundy
  • MINUTA - minuty
  • GODZINA - godziny
  • DZIEŃ - dni
  • TYDZIEŃ - tygodnie
  • MIESIĄC - miesiące
  • ĆWARTOŚĆ - bloki
  • ROK - lata

WYBIERZ ZNACZNIK CZASOWY (KWARTAŁ, 1, „28.09.2015”)
Wynik: 28.12.2015

Funkcjonować CZAS PODCZAS (data, godzina) odejmuje od daty data czas czas. Przykład:

WYBIERZ PODCZAS("2015-09-28 10:30:20", "50:20:19")
Wynik: 26.09.2015 08:10:01

Obliczanie odstępu między datami

Funkcjonować RÓŻNICA CZASOWA(data1,data2) oblicza różnicę w godzinach, minutach i sekundach pomiędzy dwiema datami date1 i date2 . Przykład:

WYBIERZ RÓŻNICĘ CZASU("2015-09-28 10:30:20", "2015-09-29 10:30:20")
Wynik: -24:10:00

Funkcjonować DATEDIFF(data1, data2) oblicza różnica w dniach pomiędzy dwiema datami, natomiast godziny, minuty i sekundy są ignorowane przy określaniu dat. Przykład:

WYBIERZ RÓŻNĄ DATĘ("2015-09-28 00:00:20", "2015-09-27 23:40:20")
Wynik: 1

Korzystając z tej funkcji łatwo jest określić ile dni minęło od daty publikacji artykułu:

WYBIERZ DATEDIFF (CURDATE(), date_publication) Z postów GDZIE id_post = 1

Funkcjonować PERIOD_DIFF (okres1, okres2) oblicza różnica w miesiącach pomiędzy dwiema datami. Daty muszą być w formacie RRRRMM. Dla przykładu dowiedzmy się, ile miesięcy minęło od stycznia 2015 do września 2015:

WYBIERZ OKRES_DIFF (201509, 201501)
Wynik: 9

Funkcjonować TIMESTAMPDIFF(interwał, data1, data2) oblicza różnicę pomiędzy datami date2 i date1 w jednostkach określonych w parametrze interwału. W takim przypadku przedział może przyjmować następujące wartości:

  • FRAC_SECOND – mikrosekundy
  • DRUGI - sekundy
  • MINUTA - minuty
  • GODZINA - godziny
  • DZIEŃ - dni
  • TYDZIEŃ - tygodnie
  • MIESIĄC - miesiące
  • ĆWARTOŚĆ - bloki
  • ROK - lata

WYBIERZ RÓŻNICĘ CZASU (GODZINA, „2015-09-28 10:30:20”, „2015-09-28 19:50:20”)
Wynik: 9

Pobieranie różnych formatów daty i godziny oraz innych informacji

Funkcjonować DATA (data i godzina) zwroty data, odcięcie czasu. Przykład:

WYBIERZ DATĘ("2015-09-28 10:30:20")
Wynik: 28.09.2015

Funkcjonować CZAS (data/godzina) zwroty godzina, data odcięcia. Przykład:

WYBIERZ CZAS („2015-09-28 10:30:20”)
Wynik: 10:30:20

Funkcjonować ZNACZNIK CZASOWY (data) zwroty z biegiem czasu pełny format daty data. Przykład:

ZNACZNIK CZASOWY("28.09.2015")
Wynik: 28.09.2015 00:00:00

Data dnia) I DZIEŃMIESIĄCA (data). Funkcje synonimiczne, które zwracają numer seryjny dnia miesiąca. Przykład:

WYBIERZ DZIEŃ("2015-09-28"), DZIEŃMIESIĄCA("2015-09-28")
Wynik: 28 | 28

Funkcje NAZWA DNIA (data),DZIEŃTYGODNIA (data) I DZIEŃ TYGODNIA (data). Pierwsza funkcja zwraca nazwa dnia tygodnia, drugi - numer dnia tygodnia(licząc od 1 – niedziela do 7 – sobota), trzeci to także numer dnia tygodnia, tylko kolejne odliczanie (licząc od 0 – poniedziałek, do 6 – niedziela). Przykład:

WYBIERZ NAZWĘ DNIA("2015-09-28"), DZIEŃ TYGODNIA("2015-09-28"), DZIEŃ TYGODNIA("28-09-2015")
Wynik: poniedziałek 2 | 0

Funkcje TYDZIEŃ (data) I TYDZIEŃFYEAR (data i godzina). Obie funkcje zwracają numer tygodnia w roku, tylko pierwszy tydzień rozpoczyna się w niedzielę, a drugi w poniedziałek. Przykład:

WYBIERZ TYDZIEŃ („2015-09-28 10:30:20”), TYDZIEŃROK („2015-09-28 10:30:20”)
Wynik: 39 | 40

Funkcjonować MIESIĄC (data) zwroty wartość liczbowa miesiąca(od 1 do 12) i NAZWA MIESIĄCA (data) nazwa miesiąca. Przykład:

WYBIERZ MIESIĄC("2015-09-28 10:30:20"), NAZWĘ MIESIĄCA("2015-09-28 10:30:20")
Wynik: 9 | Wrzesień

Funkcjonować Kwartał (data) zwroty zablokuj numer lat (od 1 do 4). Przykład:

WYBIERZ KWARTAŁ („2015-09-28 10:30:20”)
Wynik: 3

Funkcjonować ROK (data) zwroty wartość roku(od 1000 do 9999). Przykład:

WYBIERZ ROK („2015-09-28 10:30:20”)
Wynik: 2015

Funkcjonować DZIEŃROKU (data) zwroty numer seryjny dnia rocznie (od 1 do 366). Elementarz:

WYBIERZ DZIEŃROKU („2015-09-28 10:30:20”)
Wynik: 271

Funkcjonować GODZINA (data i godzina) zwroty wartość godzinowa(od 0 do 23). Przykład:

WYBIERZ GODZINĘ („2015-09-28 10:30:20”)
Wynik: 10

Funkcjonować MINUTA (data i godzina) zwroty wartość minut(od 0 do 59). Przykład:

WYBIERZ MINUTĘ („2015-09-28 10:30:20”)
Wynik: 30

Funkcjonować SECOND (data/godzina) zwroty wartość sekund(od 0 do 59). Przykład:

WYBIERZ DRUGI („2015-09-28 10:30:20”)
Wynik: 20

Funkcjonować WYCIĄG (wpisz OD daty) zwraca część daty określoną przez parametr type. Przykład:

WYBIERZ WYCIĄG (ROK OD „2015-09-28 10:30:20”), WYCIĄG (MIESIĄC OD „2015-09-28 10:30:20”), WYCIĄG (DZIEŃ OD „2015-09-28 10:30”) :20”), WYCIĄG (GODZINA OD „2015-09-28 10:30:20”), WYCIĄG (MINUTA OD „2015-09-28 10:30:20”), WYCIĄG (DRUGI Z „2015-09- 28 10:30:20")
Wynik: 2015 | 9 | 28 | 10 | 30 | 20

Funkcje wzajemne Dzisiejsza data) I OD_DAYS(n). Pierwszy konwertuje datę na liczbę dni, minęło od roku zerowego. Drugi wręcz przeciwnie, akceptuje Liczba dni, minął od roku zerowego i konwertuje je do chwili obecnej. Przykład:

WYBIERZ DO_DAYS („28.09.2015 10:30:20”), OD_DAYS (736234)
Wynik: 736234 | 28.09.2015

Funkcje wzajemne UNIX_TIMESTAMP (data) I OD_UNIXTIME(n). Pierwszy konwertuje datę na liczbę sekund minęło od 1 stycznia 1970 r. Drugi wręcz przeciwnie, akceptuje liczba sekund, od 1 stycznia 1970 r. i konwertuje je do chwili obecnej. Przykład:

WYBIERZ UNIX_TIMESTAMP („2015-09-28 10:30:20”), FROM_UNIXTIME (1443425420)
Wynik: 1443425420 | 2015-09-28 10:30:20

Funkcje wzajemne TIME_TO_SEC (czas) I SEC_TO_TIME(n). Pierwszy konwertuje czas na liczbę sekund, minęło od początku dnia. Drugi natomiast pobiera liczbę sekund od początku dnia i przelicza je na czas. Przykład:

WYBIERZ CZAS_TO_SEC („10:30:20”), SEC_TO_TIME (37820)
Wynik: 37820 | 10:30:20

Funkcjonować DATA (rok, n) pobiera rok i numer dnia w roku n i konwertuje je na datę. Przykład.

SQL pracujący z datami– jest na tyle ważne, że w żadnym wartościowym projekcie nie obejdzie się bez znajomości podstawowych operatorów sql. Cokolwiek by nie powiedzieć, we wszystkich służbach istnieje potrzeba pracy z czasem. Z reguły jest to obliczanie okresów od jednej daty do drugiej, na przykład wyświetlanie listy zarejestrowanych użytkowników za rok, miesiąc, dzień, godzinę.

Chcę podać szereg rozwiązań typowych problemów z pracą z datami w SQL, z którymi sam spotykam się każdego dnia, mam nadzieję, że będzie to dla Ciebie istotne i przydatne.

Jak uzyskać aktualną datę w SQL
GDZIE data = CURDATE()
lub inna opcja
GDZIE data = STR_TO_DATE(teraz(), "%Y-%m-%d")

Dodaj jedną godzinę do daty w SQL
DATE_ADD("2013-03-30", INTERWAŁ 1 GODZINA)

Dodaj jeden dzień do daty w SQL
DATE_ADD("2013-03-30", INTERWAŁ 1 DZIEŃ)
Podobnie możesz dodać dowolną liczbę dni do bieżącej daty.

Dodaj jeden miesiąc do daty w SQL
DATA_ADD("2013-03-30", INTERWAŁ 1 MIESIĄC)
Podobnie możesz dodać dowolną liczbę miesięcy do bieżącej daty.

Uzyskaj wczorajszy dzień w SQL
DATA_ADD(CURDATE(), INTERWAŁ -1 DZIEŃ)
Lub
DATE_SUB(CURDATE(), INTERWAŁ 1 DZIEŃ)

Uzyskaj datę rozpoczęcia bieżącego tygodnia w SQL
Na pierwszy rzut oka jest to jedno z najtrudniejszych zadań, ale można je rozwiązać w bardzo prosty sposób
CURDATE()-DZIEŃ TYGODNIA(CURDATE());

Uzyskaj wybór od poniedziałku do bieżącego dnia tygodnia w SQL

Uzyskaj wybór od pierwszego dnia bieżącego miesiąca do bieżącego dnia tygodnia w SQL
GDZIE (data MIĘDZY (CURDATE()-WEEKDAY(CURDATE())) A CURDATE())

Jak uzyskać datę urodzenia użytkownika w SQL
WYBIERZ imię i nazwisko, urodzenie, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(urodzenie)) - (RIGHT(CURRENT_DATE,5)

Znajdź w SQL wszystkich użytkowników, których urodziny wypadają w przyszłym miesiącu
WYBIERZ imię i nazwisko, urodziny OD użytkownika GDZIE MIESIĄC(urodzenie) = MIESIĄC(DATA_ADD(TERAZ(), INTERWAŁ 1 MIESIĄC));
lub inna opcja
WYBIERZ imię, narodziny OD zwierzaka GDZIE MIESIĄC(narodziny) = MOD(MIESIĄC(TERAZ()), 12) + 1;

Oprócz powyższych przypadków dotyczących pracy z datami w SQL, polecam zapoznać się z dokumentacją dotyczącą następujących operatorów:
TERAZ()– Zwraca bieżącą datę i godzinę.
CZARNY()– Zwraca aktualną datę.
CURTIME()– Zwracamy aktualny czas.
DATA()– Składa się z dwóch części: daty i godziny.
WYCIĄG()– Zwraca pojedynczą wartość daty/godziny.
DATA_ADD()– Dodaje do próbki określoną liczbę dni/minut/godzin itp.
DATA_SUB()– Odejmij określony przedział od daty.
RÓŻNA DATY()– Zwraca wartość czasu pomiędzy dwiema datami.
FORMAT DATY()– Funkcja innego wyjścia informacji czasowych.

Praca z datami w SQl jak się okazuje nie jest taka trudna i teraz zamiast obliczać okresy w PHP, można to zrobić na etapie wykonania zapytania SQL i uzyskać niezbędną selekcję danych.

Kontynuując temat:
Linuksa

Bardziej szczegółowo badamy interfejs sieciowy i zwracamy uwagę na sekcję, w której są produkowane. Tam możesz ustawić hasło lub je zmienić.Jak widzimy na przykładzie ASUSa, aby...