SQL luna curentă. Operații de dată și oră în SQL

01.07.2020 Photoshop

Ultima actualizare: 29.07.2017

T-SQL oferă o serie de funcții pentru a lucra cu date și ore:

    GETDATE: Returnează data și ora locală curentă pe baza ceasului sistemului ca obiect datetime

    SELECTARE GETDATE() -- 2017-07-28 21:34:55.830

    GETUTCDATE : returnează data și ora locală curentă în Greenwich Mean Time (UTC/GMT) ca obiect datetime

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

    SYSDATETIME: returnează data și ora locală curentă pe baza ceasului sistemului, dar diferă de GETDATE prin faptul că data și ora sunt returnate ca obiect datetime2

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

    SYSUTCDATETIME : returnează data și ora locală curentă în Greenwich Mean Time (UTC/GMT) ca obiect datetime2

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

    SYSDATETIMEOFFSET : returnează un obiect datetimeoffset(7) care conține data și ora relativ la GMT

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

    DAY: returnează ziua datei, care este transmisă ca parametru

    SELECTAȚI ZIUA(GETDATE()) -- 28

    MONTH : returnează luna unei date

    SELECTARE LUNA(GETDATE()) -- 7

    AN : returnează anul de la o dată

    SELECTARE AN (GETDATE()) -- 2017

    DATENAME: returnează porțiunea dată ca șir. Parametrul de selecție a părții date este trecut ca prim parametru, iar data în sine este trecută ca al doilea parametru:

    SELECTAȚI DATENAME(lună, GETDATE()) -- iulie

    Pentru a determina o parte a unei date, puteți utiliza următorii parametri (versiunile lor prescurtate sunt indicate în paranteze):

    • year (aa, aaaa) : an

      quarter (qq, q) : sfert

      luna (mm, m) : luna

      dayofyear (dy, y) : ziua anului

      zi (dd, d) : ziua lunii

      saptamana (saptamana, satamana) : saptamana

      weekday (dw) : ziua săptămânii

      oră (hh) : oră

      minute (mi, n) : minut

      secundă (ss, s): secundă

      milisecundă (ms): milisecundă

      microsecundă (mcs) : microsecundă

      nanosecundă (ns) : nanosecundă

      tzoffset (tz): offset în minute în raport cu GMT (pentru un obiect datetimeoffset)

    DATEPART: Returnează partea dată ca număr. Parametrul de selecție a părții date este transmis ca prim parametru (se folosesc aceiași parametri ca și pentru DATENAME), iar data în sine este transmisă ca al doilea parametru:

    SELECTARE DATEPART(lună, GETDATE()) -- 7

    DATEADD: Returnează o dată care este rezultatul adăugării unui număr la o anumită componentă de dată. Primul parametru reprezintă componenta dată descrisă mai sus pentru funcția DATENAME. Al doilea parametru este cantitatea care trebuie adăugată. Al treilea parametru este data în sine, la care trebuie să adăugați:

    SELECT DATEADD(lună, 2, "2017-7-28") -- 2017-09-28 00:00:00.000 SELECT DATEADD(ziua, 5, "2017-7-28") -- 2017-08-02 00 :00:00.000 SELECT DATEADD(zi, -5, "2017-7-28") -- 2017-07-23 00:00:00.000

    Dacă cantitatea adăugată reprezintă un număr negativ, atunci data este de fapt decrementată.

    DATEDIFF: returnează diferența dintre două date. Primul parametru este componenta dată, care indică în ce unități trebuie măsurată diferența. Al doilea și al treilea parametru sunt datele comparate:

    SELECT DATEDIFF(an, „2017-7-28”, „2018-9-28”) -- diferență 1 an SELECT DATEDIFF(lună, „2017-7-28”, „2018-9-28”) -- diferență 14 luni SELECT DATEDIFF(zi, „2017-7-28”, „2018-9-28”) -- diferență 427 de zile

    TODATETIMEOFFSET : returnează o valoare datetimeoffset care este rezultatul adăugării decalajului de timp la alt obiect datetimeoffset

    SELECTAȚI TODATETIMEOFFSET(„2017-7-28 01:10:22”, „+03:00”)

    SWITCHOFFSET: returnează o valoare datetimeoffset care este rezultatul adăugării decalajului de timp la un obiect datetime2

    SELECTARE SWITCHOFFSET(SYSDATETIMEOFFSET(), „+02:30”)

    EOMONTH: Returnează data ultimei zile pentru luna care este utilizată în data trecută ca parametru.

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

    Ca al doilea parametru opțional, puteți trece numărul de luni care trebuie adăugate la dată. Apoi, ultima zi a lunii va fi calculată pentru noua dată.

    DATEFROMPARTS: după an, lună și zi creează o dată

    SELECTARE DATAFROMPARTS(2017, 7, 28) -- 2017-07-28

    ISDATE: Testează dacă o expresie este o dată. Dacă este, returnează 1, în caz contrar returnează 0.

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

Un exemplu de utilizare a funcțiilor este crearea unui tabel de comandă care conține data comenzii:

CREATE TABLE Orders (Id INT IDENTITY PRIMARY KEY, ProductId INT NOT NULL, CustomerId INT NOT NULL, CreatedAt DATE NOT NULL DEFAULT GETDATE(), ProductCount INT DEFAULT 1, Price MONEY NOT NULL);

Expresia DEFAULT GETDATE() specifică că, dacă nu este furnizată nicio dată la adăugarea datelor, aceasta este calculată automat utilizând funcția GETDATE().

Un alt exemplu - să găsim comenzi care au fost făcute acum 16 zile:

SELECTAȚI * FROM Comenzile WHERE DATEDIFF(zi, CreatedAt, GETDATE()) = 16

De la autor: Astăzi vom vorbi despre cum funcționează funcțiile de dată în SQL. Următorul tabel oferă o listă a tuturor funcțiilor importante de dată și oră care sunt disponibile. Există și altele suportate de diferite SGBD-uri. Această listă reprezintă funcțiile disponibile în SGBD-ul MySQL.

ADDDATE(). Adaugă date

ADDTIME(). Adaugă timp

CONVERT_TZ(). Se convertește dintr-un fus orar în altul

CURDATE(). Returnează data curentă

CURRENT_DATE(), CURRENT_DATE. Sinonime pentru CURDATE()

CURRENT_TIME(), CURRENT_TIME. Sinonime pentru CURTIME()

CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP. Sinonime pentru NOW()

CURTIME(). Returnează ora curentă

DATE_ADD(). Adaugă două date

DATE_FORMAT(). Setează formatul de dată specificat

DATE_SUB(). Scade o dată de la alta

DATA(). Extrage partea dată dintr-o expresie care reprezintă o dată sau o oră și o dată

DATEDIFF(). Scade o dată de la alta

ZI(). Sinonim pentru DAYOFMONTH()

DAYNAME(). Returnează ziua săptămânii

DAYOFMONT(). Returnează ziua lunii (1-31)

DAYOFWEEK(). Returnează indexul zilei săptămânii argumentului

ZIUL ANULUI(). Returnează numărul zilei din an (1-366)

EXTRAGE. Preia partea dată

FROM_DAYS(). Convertește un număr de zi într-o dată

FROM_UNIXTIME(). Formatează o dată ca marcaj temporal UNIX

ORĂ(). Preia ora

LAST_DAY. Returnează ultima zi a lunii pentru argument

LOCALTIME(), LOCALTIME. Sinonim pentru ACUM()

LOCALTIMESTAMP, LOCALTIMESTAMP(). Sinonim pentru ACUM()

MAKEDATE(). Creează o dată din anul și ziua anului

MAKETIME. MAKETIME(). MICROSECOND(). Returnează microsecunde din argument

MINUT(). Returnează minute de la ceartă

LUNĂ(). Revenind luna de la o dată

MONTHNAME(). Returnează numele lunii

ACUM(). Returnează data și ora curente

PERIOD_ADD(). Adaugă o perioadă anului-lună

PERIOD_DIFF(). Returnează numărul de luni dintre perioade

TRIMESTRU(). Returnează trimestrul din argument

SEC_TO_TIME(). Convertește secundele în formatul „HH:MM:SS”.

DOILEA(). Returnează secunde (0-59)

STR_TO_DATE(). Convertește un șir într-o dată

SUBDATE(). Când este apelat cu trei argumente, sinonimul DATE_SUB().

SUBTIME(). Scade timpul

SYSDATE(). Returnează timpul de execuție al unei funcții

TIME_FORMAT(). Setează formatul orei

TIME_TO_SEC(). Returnează argumentul convertit în secunde

TIMP(). Extrage partea de timp a expresiei trecute

TimeDiff(). Scade timpul

TIMESTAMP(). Cu un singur argument, această funcție returnează o expresie de dată sau oră. Cu două argumente - adaugă aceste două argumente

TIMESTAMPADD(). Adaugă un interval la o expresie de dată și oră

TIMESTAMPDIFF(). Scade un interval dintr-o expresie datetime

TO_DAYS(). Returnează argumentul datei convertit în zile

UNIX_TIMESTAMP(). Returnează un marcaj temporal UNIX

UTC_DATE(). Returnează data UTC curentă

UTC_TIME(). Returnează ora UTC actuală

UTC_TIMESTAMP(). Returnează data și ora UTC curente

SĂPTĂMÂNĂ(). Returnează numărul săptămânii

ZIUA SĂPTĂMÂNNICĂ(). Returnează indexul zilei săptămânii

WEEKOFYEAR(). Returnează numărul săptămânii calendaristice (1-53)

AN(). Returnează anul

YEARWEEK(). Returnează anul și săptămâna

ADDDATE(data,INTERVAL unitate expr), ADDDATE(expr,zile)

Când este apelat cu un al doilea argument specificat ca INTERVAL, ADDDATE() este un sinonim pentru DATE_ADD(). Funcția asociată SUBDATE() este un sinonim pentru DATE_SUB(). Pentru informații despre argumentul blocului INTERVAL, consultați DATE_ADD().

Când este apelat cu al doilea argument dat în zile, MySQL tratează acest lucru ca un număr întreg de zile de adăugat expresiei.

ADDTIME(expr1,expr2)

ADDTIME() adaugă expr2 la expr1 și returnează rezultatul. Expr1 este o expresie de oră sau dată și oră, în timp ce expr2 este o expresie de timp.

CONVERT_TZ(dt,from_tz,to_tz)

Convertește valoarea datei și orei dt din fusul orar specificat în from_tz în fusul orar specificat în to_tz și returnează valoarea rezultată. Această funcție returnează NULL dacă argumentele sunt nevalide.

CURDATE()

Returnează data curentă ca valoare în formatul „AAAA-LL-ZZ” sau AAAAMMZZ, în funcție de faptul dacă această funcție este utilizată într-un șir sau context numeric.

CURRENT_DATE și CURRENT_DATE()

CURRENT_DATE și CURRENT_DATE() sunt sinonime pentru CURDATE()

CURTIME()

Returnează ora curentă ca valoare în formatul „HH:MM:SS” sau HHMMSS, în funcție de faptul dacă funcția este utilizată într-un șir sau context numeric. Valoarea este exprimată pentru fusul orar curent.

CURRENT_TIME și CURRENT_TIME()

CURRENT_TIME și CURRENT_TIME() sunt sinonime pentru CURTIME().

CURRENT_TIMESTAMP și CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP și CURRENT_TIMESTAMP() sunt sinonime pentru NOW().

DATA(expr)

Preia partea dată a unei expresii date sau datetime expr.

DATEDIFF(expr1,expr2)

DATEDIFF() returnează expr1.expr2 exprimat ca numărul de zile dintre două date. Atât expr1 cât și expr2 sunt expresii de dată sau oră. În calcule sunt utilizate doar părțile date.

DATE_ADD(data,INTERVAL unitatea expr), DATE_SUB(data,INTERVAL unitatea expr)

Aceste funcții efectuează operații aritmetice pe date. data este reprezentată ca valoare DATETIME sau DATE care indică data de început. expr este o expresie care specifică valoarea intervalului de adăugat sau scăzut din data inițială. expr este un șir; poate începe cu „-” pentru intervale negative.

unit este un cuvânt cheie care specifică unitățile de măsură pentru expresie. Cuvântul cheie INTERVAL și notația unităților nu fac distincție între majuscule și minuscule. Următorul tabel arată forma așteptată a argumentului expr pentru fiecare valoare unitară.

Valorile QUARTER și WEEK sunt disponibile în MySQL începând cu versiunea 5.0.0.

DATE_FORMAT (data,format)

Această comandă formatează valoarea datei conform șirului de format specificat. Următoarele indicatoare pot fi utilizate în linia de format. Indicatorii de format trebuie precedați de un caracter „%”.

%o. Numele prescurtat al zilei săptămânii (Dum..Sat)

%b. Numele lunii prescurtat (ian..dec)

%Cu. Denumirea numerică a lunii (0…12)

%D. Ziua lunii cu sufixul englezesc (0, 1, 2, 3,.)

%d. Denumirea numerică a zilei lunii (00..31)

%e. Denumirea numerică a zilei lunii (00..31)

%f. Microsecunde (000000..999999)

%H. Ora (00..23)

%h. Ora (01..12)

%I. Ora (01..12)

%i. Desemnarea numerică a minutelor (00..59)

%J. Ziua anului (001..366)

%k. Ora (0..23)

%l. Ora (1..12)

%M. Numele lunii (ianuarie..decembrie)

%m. Denumirea numerică a lunii (00..12)

%r. AM sau PM

%r. Ora, format de 12 ore (hh:mm:ss urmat de AM sau PM)

%S. Secunde (00..59)

%s. Secunde (00..59)

%T. Ora, format de 24 de ore (hh:mm:ss)

%U. Săptămâna (00..53), unde duminica este prima zi a săptămânii

%u. Săptămâna (00..53), unde luni este prima zi a săptămânii

%V. Săptămâna (01..53), unde duminica este prima zi a săptămânii; folosit cu %X

%v. Săptămâna (01..53), unde luni este prima zi a săptămânii; folosit cu %x

%W. Numele zilei săptămânii (duminică..sâmbătă)

%w. Ziua săptămânii (0=duminică..6=sâmbătă)

%X. An pentru o săptămână în care prima zi a săptămânii este duminică, un număr din patru cifre; folosit cu %V

%x. An pentru o săptămână în care prima zi a săptămânii este luni, un număr din patru cifre; folosit cu %V

%Y. An, data, patru cifre

%y. Denumirea numerică a anului (două cifre)

%%. Literal simbolul %

%x. x, pentru toate.x nu sunt enumerate mai sus

DATE_SUB(data,INTERVAL unitate expr)

Similar cu funcția DATE_ADD().

ZI (data)

DAY() este un sinonim pentru funcția DAYOFMONTH().

DAYNAME(data)

Returnează ziua săptămânii pentru data specificată.

DAYOFMONTH(data)

Returnează ziua lunii pentru data specificată în intervalul de la 0 la 31.

DAYOFWEEK(data)

Returnează indexul zilei săptămânii (1 = duminică, 2 = luni, ., 7 = sâmbătă). Aceste valori ale indexului urmează standardul ODBC.

DAYOFYEAR(data)

Returnează ziua anului pentru data specificată în intervalul de la 1 la 366.

EXTRACT(unitatea de la data)

Funcția EXTRACT() folosește aceleași tipuri de indicatori de unitate ca DATE_ADD() sau DATE_SUB(), dar nu efectuează operații aritmetice pe date, ci mai degrabă extrage partea indicatorului de unitate a datei.

FROM_DAYS(N)

Valoarea DATE este returnată luând în considerare numărul de zile N.

Nota. Folosiți cu atenție FROM_DAYS() pentru datele vechi. Funcția nu este destinată să lucreze cu valorile datei înainte de introducerea calendarului gregorian (1582).

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)

Returnează o reprezentare a argumentului unix_timestamp ca valoare în formatul „AAAA-LL-ZZ HH:MM:SS sau AAAAMMDDHHMMSS”, în funcție de faptul dacă această funcție este utilizată într-un șir sau context numeric. Valoarea este exprimată în fusul orar curent. Parametrul unix_timestamp este o valoare internă de marcaj temporal care este generată de funcția UNIX_TIMESTAMP().

Dacă este specificat formatul, rezultatul este formatat conform șirului de format, care este utilizat în același mod ca în secțiunea DATE_FORMAT().

HOUR(timp)

Returnează orele de la ora specificată. Intervalul valorii returnate este de la 0 la 23. Cu toate acestea, intervalul valorilor TIME este de fapt mult mai mare, astfel încât HOUR poate returna valori mai mari decât 23.

LAST_DAY(data)

Preia o valoare de dată sau de oră și returnează valoarea corespunzătoare ultimei zile a lunii. Returnează NULL dacă argumentul este invalid.

LOCALTIME și LOCALTIME()

LOCALTIME și LOCALTIME() sunt sinonime pentru NOW().

LOCALTIMESTAMP și LOCALTIMESTAMP()

LOCALTIMESTAMP și LOCALTIMESTAMP() sunt sinonime pentru NOW().

MAKEDATE(an, zi din an)

Returnează valorile pentru data, anul specificat și ziua anului. Valoarea zilei anului trebuie să fie mai mare decât 0 sau rezultatul va fi NULL.

MAKETIME (oră, minut, secundă)

Returnează valoarea timpului calculată din argumentele oră, minut și secundă.

MICROSECOND(expr)

Returnează microsecunde dintr-o expresie de timp sau o expresie datetime(expr) ca număr în intervalul de la 0 la 999999.

MINUTE(timp)

Returnează minutele pentru timpul specificat, în intervalul de la 0 la 59.

MONTH(data)

Returnează luna pentru data specificată în intervalul de la 0 la 12.

MONTHNAME(data)

Returnează numele complet al lunii pentru data specificată.

ACUM()

Returnează data și ora curentă ca valoare în formatul „AAAA-LL-ZZ HH:MM:SS” sau AAAAMMDDHHMMSS, în funcție de faptul dacă funcția este utilizată într-un șir sau context numeric. Această valoare este exprimată în fusul orar curent.

PERIOD_ADD(P,N)

Adaugă N luni la perioada P (în format AAAA sau AAAA). Returnează o valoare în format AAAAMM. Rețineți că argumentul perioadei P nu este o valoare de dată.

PERIOD_DIFF(P1;P2)

Returnează numărul de luni dintre perioadele P1 și P2. Perioadele P1 și P2 trebuie specificate în formatul YYMM sau YYYYMM. Rețineți că argumentele perioadei P1 și P2 nu sunt valori ale datei.

QUARTER(data)

Returnează trimestrul anului pentru data specificată în intervalul de la 1 la 4.

SECOND(timp)

Returnează valoarea secundelor pentru un interval de timp cuprins între 0 și 59.

SEC_TO_TIME(secunde)

Returnează argumentul secunde convertit în ore, minute și secunde în formatul „HH:MM:SS” sau HHMMSS, în funcție de faptul dacă funcția este utilizată într-un șir sau context numeric.

STR_TO_DATE(str,format)

Acesta este inversul funcției DATE_FORMAT(). Acceptă șirul str și formatul șir de format. Funcția STR_TO_DATE() returnează DATETIME dacă șirul de format conține atât o dată, cât și o oră. În caz contrar, returnează DATE sau TIME dacă șirul conține doar o dată sau o oră.

SUBDATE(data,INTERVAL expr unitate) și SUBDATE(expr,zile)

Dacă SUBDATE() este apelată cu un al doilea argument specificat ca INTERVAL, funcția este un sinonim pentru DATE_SUB(). Pentru informații despre argumentul INTERVAL, consultați DATE_ADD().

SUBTIME(expr1,expr2)

Funcția SUBTIME() returnează expr1. expr2 este exprimată ca valoare în același format ca expr1. Valoarea expr1 este o expresie oră sau dată și oră, iar valoarea expr2 este o expresie temporală.

SYSDATE()

Returnează data și ora curentă ca valoare în formatul „AAAA-LL-ZZ HH:MM:SS” sau AAAAMMDDHHMMSS, în funcție de faptul dacă funcția este utilizată într-un șir sau context numeric.

TIME(expr)

Extrage porțiunea de timp a expr și o returnează ca șir.

TIMEDIFF(expr1,expr2)

TIMEDIFF() returnează expr1. expr2 este exprimată ca valoare de timp. Valorile expr1 și expr2 sunt expresii oră sau dată și oră, dar ambele trebuie să fie de același tip.

TIMESTAMP (expr), TIMESTAMP (expr1, expr2)

Cu un argument specificat, această funcție returnează o expresie dată sau oră expr ca valoare dată și oră. Cu două argumente, adaugă expresia de timp expr2 la expresia de dată sau oră expr1 și returnează rezultatul ca valoare de dată și oră.

TIMESTAMPADD(unitate, interval, datetime_expr)

Această funcție adaugă o expresie de interval întreg la o expresie de dată sau oră datetime_expr. Unitățile pentru interval sunt specificate de argumentul unit, care poate lua una dintre următoarele valori:

Valoarea unității poate fi specificată folosind unul dintre cuvintele cheie, așa cum se arată mai sus, sau cu prefixul SQL_TSI_. De exemplu, DAY și SQL_TSI_DAY sunt valori valide.

TIMESTAMPDIFF(unitate, datetime_expr1, datetime_expr2)

Returnează diferența întregului dintre expresiile de dată sau de oră datetime_expr1 și datetime_expr2. Unitățile de măsură pentru rezultat sunt specificate de argumentul unit. Valorile valide pentru argumentul unitate sunt aceleași cu cele enumerate în funcția TIMESTAMPADD().

TIME_FORMAT(ora,format)

Această funcție este utilizată în același mod ca și funcția DATE_FORMAT(), dar șirul de format poate conține doar specificatori de format pentru ore, minute și secunde.

Dacă valoarea timpului conține o parte oră care este mai mare de 23, indicatorii de format de ceas %H și %k dau o valoare mai mare decât intervalul normal de la 0 la 23. Alți indicatori de format de ceas dau o valoare modulo 12 ore.

TIME_TO_SEC(timp)

Returnează argumentul de timp convertit în secunde.

TO_DAYS(data)

Returnează numărul zilei (numărul de zile de la anul 0) pentru data dată dată.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(data)

Dacă această funcție este apelată fără un argument, returnează marcajul de timp Unix (secunde de la „1970-01-01 00:00:00” UTC) ca un întreg pozitiv. Dacă UNIX_TIMESTAMP() este apelat cu un argument de dată, returnează valoarea argumentului exprimată în secunde de la „1970-01-01 00:00:00” UTC. data poate fi un șir DATE, un șir DATETIME, un TIMESTAMP sau un număr în formatul YYMMDD sau YYYYMMDD.

UTC_DATE, UTC_DATE()

Returnează data UTC curentă ca valoare în formatul „AAAA-LL-ZZ” sau AAAAMMZZ, în funcție de dacă această funcție este utilizată într-un șir sau context numeric.

UTC_TIME, UTC_TIME()

Returnează ora UTC curentă ca valoare în formatul „HH:MM:SS” sau HHMMSS, în funcție de faptul dacă funcția este utilizată într-un șir sau context numeric.

UTC_TIMESTAMP, UTC_TIMESTAMP()

Returnează data și ora UTC curentă ca valoare „AAAA-LL-ZZ HH:MM:SS” sau în formatul AAAAMMDDDHHMMSS, în funcție de faptul dacă această funcție este utilizată într-un șir sau context numeric.

SĂPTĂMÂNĂ(data[,modul])

Această funcție returnează numărul săptămânii pentru data dată dată. Formularul WEEK() cu două argumente vă permite să specificați dacă săptămâna începe duminică sau luni și dacă valoarea returnată trebuie să fie în intervalul 0 la 53 sau de la 1 la 53. Dacă argumentul mod este omis, valoarea este utilizată variabila de sistem default_week_format

ZIUA SĂPTĂMNICĂ (data)

Returnează indexul zilei săptămânii pentru data dată (0 = luni, 1 = marți, 6 = duminică).

WEEKOFYEAR(data)

Returnează săptămâna calendaristică pentru data dată ca un număr în intervalul de la 1 la 53. WEEKOFYEAR() este o funcție de compatibilitate echivalentă cu WEEK(date,3).

AN (data)

Returnează anul pentru data dată, variind de la 1000 la 9999 sau 0 pentru date.zero.

YEARWEEK(data), YEARWEEK(data,modul)

Returnează anul și săptămâna pentru data dată dată. Argumentul mode funcționează exact ca argumentul mode al funcției WEEK(). Anul rezultat poate fi diferit de anul din argumentul datei pentru prima și ultima săptămână a anului.

Nota. Numărul săptămânii este diferit de ceea ce WEEK() va returna (0) pentru argumentele opționale 0 sau 1, deoarece WEEK() va returna săptămâna în contextul unui anumit an.

SQL care lucrează cu date– este atât de important încât nu puteți face fără cunoștințe despre operatorii SQL de bază în orice proiect care merită. Orice s-ar putea spune, în toate serviciile este nevoie de a lucra cu timpul. De regulă, acesta este calculul perioadelor de la o dată la alta, de exemplu, afișarea unei liste de utilizatori înregistrați pentru un an, lună, zi, oră.

Vreau să ofer o serie de soluții la problemele comune legate de lucrul cu date în SQL, pe care le-am întâlnit eu însumi în fiecare zi, sper că acest lucru vă va fi relevant și util.

Cum să obțineți data curentă în SQL
WHERE data = CURDATE()
sau alta varianta
WHERE data = STR_TO_DATE(acum(), "%Y-%m-%d")

Adăugați o oră până acum în SQL
DATE_ADD(„2013-03-30”, INTERVAL 1 HOUR)

Adăugați o zi la o dată în SQL
DATE_ADD(„2013-03-30”, INTERVAL 1 DAY)
În mod similar, puteți adăuga orice număr de zile la data curentă.

Adăugați o lună la o dată în SQL
DATE_ADD("2013-03-30", INTERVAL 1 MONTH)
În mod similar, puteți adăuga orice număr de luni la data curentă.

Obțineți ziua de ieri în SQL
DATE_ADD(CURDATE(), INTERVAL -1 ZI)
sau
DATE_SUB(CURDATE(), INTERVAL 1 ZI)

Obțineți data de începere a săptămânii curente în SQL
Aceasta este una dintre cele mai dificile probleme la prima vedere, dar poate fi rezolvată foarte simplu
CURDATE()-WEEKDAY(CURDATE());

Obțineți o selecție din această zi de luni până în ziua curentă a săptămânii în SQL

Obțineți o selecție din prima zi a lunii curente până în ziua curentă a săptămânii în SQL
WHERE (data INTRE (CURDATE()-WEEKDAY(CURDATE())) SI CURDATE())

Cum să obțineți data de naștere a utilizatorului în SQL
SELECTează numele, nașterea, CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(naștere)) - (RIGHT(CURRENT_DATE,5)

Găsiți toți utilizatorii a căror naștere este luna viitoare în SQL
SELECT numele, nașterea FROM utilizator WHERE MONTH(naștere) = MONTH(DATA_ADD(ACUM(), INTERVAL 1 MONTH));
sau alta varianta
SELECT numele, nașterea FROM animal de companie WHERE MONTH(birth) = MOD(MONTH(NOW()), 12) + 1;

Pe lângă cazurile de mai sus privind lucrul cu date în SQL, vă recomand să citiți documentația pentru următorii operatori:
ACUM()– Returnează data și ora curente.
CURDATE()– Returnează data curentă.
CURTIME()– Revenim la ora curentă.
DATA()– Constă din două părți data și ora.
EXTRAGE()– Returnează o singură valoare de dată/ora.
DATE_ADD()– Adaugă numărul specificat de zile/minute/ore etc. la eșantion.
DATE_SUB()– Scădeți intervalul specificat de la dată.
DATEDIFF()– Returnează valoarea timpului dintre două date.
DATE_FORMAT()– Funcție pentru ieșirea diferită a informațiilor de timp.

Lucrul cu datele în SQL, după cum se dovedește, nu este atât de dificil, iar acum, în loc să calculați perioade folosind PHP, puteți face acest lucru în etapa de execuție a interogării SQL și obțineți selecția de date necesară.

Funcțiile limbajului Transact-SQL pot fi agregate sau scalare. Aceste tipuri de funcții sunt discutate în acest articol.

Funcții agregate

Funcțiile agregate efectuează calcule pe un grup de valori de coloană și returnează întotdeauna o singură valoare ca rezultat al acestor calcule. Transact-SQL acceptă mai multe funcții de agregare comune:

AVG

Calculează media aritmetică a datelor conținute într-o coloană. Valorile pe care se efectuează calculul trebuie să fie numerice.

MIN și MAX

Determină valoarea maximă și minimă a tuturor valorilor datelor conținute într-o coloană. Valorile pot fi numerice, șir sau temporale (data/ora).

SUMĂ

Calculează suma totală a valorilor dintr-o coloană. Valorile pe care se efectuează calculul trebuie să fie numerice.

CONTA

Numărează numărul de valori non-nule dintr-o coloană. Funcția count(*) este singura funcție agregată care nu efectuează calcule pe coloane. Această funcție returnează numărul de rânduri (indiferent dacă coloanele individuale conțin valori nule).

COUNT_BIG

Similar cu funcția de numărare, cu diferența că returnează o valoare de date BIGINT.

Utilizarea funcțiilor de agregare obișnuite într-o instrucțiune SELECT va fi discutată într-un articol viitor.

Funcții scalare

Funcțiile scalare Transact-SQL sunt utilizate în crearea expresiilor scalare. (O funcție scalară efectuează calcule pe o singură valoare sau o listă de valori, în timp ce o funcție agregată efectuează calcule pe un grup de valori pe mai multe rânduri.) Funcțiile scalare pot fi împărțite în următoarele categorii:

    funcții numerice;

    funcții de dată;

    funcții șir;

    funcțiile sistemului;

    funcții de metadate.

Aceste tipuri de funcții sunt discutate în secțiunile următoare.

Funcții numerice

Funcțiile numerice Transact-SQL sunt funcții matematice pentru modificarea valorilor numerice. O listă a funcțiilor numerice și scurtele lor descrieri sunt prezentate în tabelul de mai jos:

Funcții numerice Transact-SQL
Funcţie Sintaxă Descriere Exemplu de utilizare
ABS ABS(n)

Returnează valoarea absolută (adică valorile negative sunt returnate ca pozitive) a unei expresii numerice n.

SELECT ABS(-5.320) -- Returnează 5.320 SELECT ABS(8.90) -- Returnează 8.90

ACOS, ASIN, ATAN, ATN2 ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)

Funcții trigonometrice inverse care calculează arccosinus, arcsinus, arctangente ale valorii n (pentru ATN2 se calculează arctangente n/m). Valorile de intrare n, m și rezultatul sunt de tipul de date FLOAT.

COS, SIN, TAN, COT COS(n), SIN(n), TAN(n), COT(n)

Funcții trigonometrice care calculează cosinusul, sinusul, tangenta, cotangenta valorii n. Rezultatul are tipul de date FLOAT.

GRADE, RADIANI GRADE(n), RADIANI(n)

Funcția GRADE convertește radianii în grade, respectiv RADIANI, invers.

SELECT GRADE(PI() / 4) -- Returnează 45 SELECT COS(RADIANS(60,0)) -- Returnează 0,5

PLAFON PLAFON(n)

Rotunjește un număr la o valoare întreagă mai mare.

SELECT CEILING(-5.320) -- Returnează -5 SELECT CEILING(8.90) -- Returnează 9

RUNDĂ ROUND(n, p, [t])

Rotunjește valoarea lui n la cea mai apropiată p. Când p este un număr pozitiv, partea fracțională a lui n este rotunjită, iar când este negativă, partea întreagă este rotunjită. Când se folosește argumentul opțional t, numărul n nu este rotunjit, ci mai degrabă trunchiat (adică rotunjit în jos).

SELECT ROUND(5.3208, 3) -- Returnează 5.3210 SELECT ROUND(125.384, -1) -- Returnează 130.000 SELECT ROUND(125.384, -1, 1) -- Returnează 120.000

PODEA FLOOR(n)

Rotunjește în jos la cea mai mică valoare întreagă.

SELECT FLOOR(5.88) -- Returnează 5

EXP EXP(n)

Calculează valoarea lui e n .

LOG, LOG10 LOG(n), LOG10(n)

LOG(n) - calculează logaritmul natural (adică baza e) al numărului n, LOG10(n) - calculează logaritmul zecimal (bază 10) al numărului n.

P.I. PI()

Returnează valoarea lui π (3,1415).

PUTERE PUTEREA(x, y)

Calculează valoarea lui x y .

RAND RAND()

Returnează un număr arbitrar de tip FLOAT în intervalul de valori între 0 și 1.

ROWCOUNT_BIG ROWCOUNT_BIG()

Returnează numărul de rânduri de tabel care au fost procesate de ultima instrucțiune Transact-SQL executată de sistem. Valoarea returnată este de tip BIGINT.

SEMN SEMNEZĂ(n)

Returnează semnul lui n ca număr: +1 dacă este pozitiv, -1 dacă este negativ.

SQRT, PĂTRAT SQRT(n), SQUARE(n)

SQRT(n) - calculează rădăcina pătrată a numărului n, SQUARE(n) - returnează pătratul argumentului n.

Funcții de dată

Funcțiile de dată evaluează părțile corespunzătoare de dată sau oră ale unei expresii sau returnează o valoare a intervalului de timp. Funcțiile de dată acceptate în Transact-SQL și scurtele lor descrieri sunt prezentate în tabelul de mai jos:

Funcții de dată Transact-SQL
Funcţie Sintaxă Descriere Exemplu de utilizare
GETDATE GETDATE()

Returnează data și ora curentă a sistemului.

SELECTAȚI GETDATE()

DATEPART DATEPART (articol, data)

Returnează partea de dată specificată în parametrul element ca număr întreg.

Returnează 1 (ianuarie) SELECT DATEPART(lună, "01/01/2012") -- Returnează 4 (miercuri) SELECT DATEPART(zi a săptămânii, "01/02/2012")

DATENAME DATENAME (articol, data)

Returnează partea dată specificată în parametrul element ca șir de caractere.

Returnează ianuarie SELECT DATENAME(lună, "01/01/2012") -- Returnează miercuri SELECT DATENAME(zi a săptămânii, "01/02/2012")

DATEDIFF DATEDIFF (articol, dat1, dat2)

Calculează diferența dintre două părți date dat1 și dat2 și returnează un rezultat întreg în unitățile specificate în argumentul element.

Returnează 19 (interval de 19 ani între date) SELECT DATEDIFF(an, „01/01/1990”, „01/01/2010”) -- Returnează 7305 (interval de 7305 zile între date) SELECT DATEDIFF(ziua, „01/01 /1990", "01/01" .2010")

DATEADD DATEADD (articol, n, data)

Adaugă al n-lea număr de unități specificat în argumentul articol la data specificată. (n poate fi și negativ.)

Se vor adăuga 3 zile la data curentă SELECT DATEADD(day, 3, GETDATE())

Funcții șiruri

Funcțiile șir manipulează valorile coloanelor, care sunt de obicei tipuri de date caractere. Funcțiile șir acceptate în Transact-SQL și scurtele lor descrieri sunt prezentate în tabelul de mai jos:

Funcții șiruri Transact-SQL
Funcţie Sintaxă Descriere Exemplu de utilizare
ASCII, UNICODE ASCII(car), UNICODE(car)

Convertește caracterul specificat în întregul cod ASCII corespunzător.

SELECT ASCII("W") -- 87 SELECT UNICODE("u") -- 1102

CHAR, NCHAR CHAR(int), NCHAR(int)

Convertește un cod ASCII (sau Unicode dacă NCHAR) în caracterul corespunzător.

SELECTARE CHAR(87) -- „W” SELECTARE NCHAR(1102) -- „yu”

CHARINDEX CHARINDEX (str1, str2)

Returnează poziția de pornire a apariției subșirului str1 în șirul str2. Dacă șirul str2 nu conține subșirul str1, se returnează valoarea 0

Returnează 5 SELECT CHARINDEX ("morph", "polimorfism")

DIFERENŢĂ DIFERENTA (str1, str2)

Returnează un număr întreg între 0 și 4 care este diferența dintre valorile SOUNDEX ale celor două șiruri str1 și str2. Metoda SOUNDEX returnează un număr care caracterizează sunetul șirului. Folosind această metodă, puteți identifica șiruri similare. Funcționează doar pentru caractere ASCII.

Returnează 2 SELECT DIFFERENCE („ortografie”, „a spune”)

STÂNGA, DREAPTA STÂNGA (str, lungime), DREAPTA (str, lungime)

Returnează numărul primelor caractere ale șirului str specificat de parametrul de lungime pentru LEFT și ultimele caractere de lungime ale șirului str pentru funcția RIGHT.

DECLARE @str nvarchar(30) = "Sincronizare"; -- Returnează „Sync” SELECT LEFT(@str, 4) -- Returnează „Zation” SELECT RIGHT(@str, 5)

LEN LEN(str)

Returnează numărul de caractere (nu numărul de octeți) șirului de caractere specificat în argument, inclusiv spațiile de sfârșit.

JOS, SUS LOWER(str), UPPER(str)

Funcția LOWER convertește toate literele mari din str1 în minuscule. Literele mici și alte caractere incluse în șir nu sunt afectate. Funcția UPPER convertește toate literele mici din șirul str în majuscule.

DECLARE @str nvarchar(30) = "Sincronizare"; -- Returnează „SYNCHRONIZATION” SELECT UPPER(@str) -- Returnează „synch” SELECT LOWER(@str)

LTRIM, RTRIM LTRIM(str), RTRIM(str)

Funcția LTRIM elimină spațiile de început din șirul str, respectiv RTRIM elimină spațiile de la sfârșitul șirului.

NUME CITATUL QUOTENAME(șir_caracter)

Returnează un șir Unicode cu delimitatori adăugați pentru a converti șirul de intrare într-un identificator delimitat valid.

DECLARE @str nvarchar(30) = "Sincronizare"; -- Returnează „[Sincronizare]” SELECT NUME CITATUL (@str)

PATINDEX PATINDEX (%p%, expr)

Returnează poziția de pornire a primei apariții a modelului p în expresia dată sau zero dacă modelul nu este găsit.

Returnează 4 SELECT PATINDEX ("%chro%", "Sincronizare")

ÎNLOCUI ÎNLOCUIRE (str1, str2, str3)

Înlocuiește toate aparițiile subșirului str2 din șirul str1 cu subșirul str3.

Returnează „Desincronizare” SELECT REPLACE(„Sincronizare”, „Sincronizare”, „Desincronizare”)

REPLICAȚI REPLICA (str, i)

Repetă șirul de str i ori.

Returnează „aBaBaBaBaB” SELECT REPLICATE(„aB”, 5)

VERSO MARCHĂ (str)

Tipărește șirul șir în ordine inversă.

Returnează „yaitsazinorkhniS” SELECT REVERSE(„Sincronizare”)

SOUNDEX SOUNDEX (str)

Returnează un cod soundex de patru caractere folosit pentru a determina dacă două șiruri sunt similare. Funcționează doar pentru caractere ASCII.

SPAŢIU SPAȚIU (lungime)

Returnează un șir de spații cu lungimea specificată în parametrul lungime. Similar cu REPLICATE (" ", lungime).

STR STR (f[, len[, d]])

Convertește expresia în virgulă mobilă f specificată într-un șir, unde len este lungimea șirului, inclusiv virgulă zecimală, semn, cifre și spații (implicit la 10), iar d este numărul de zecimale de returnat.

Returnează „3.14” SELECT STR (3.1415, 4, 2)

LUCRURI STUFF (str1, a, lungime, str2)

Îndepărtează caracterele de lungime din șirul str1, începând cu poziția a și inserează șirul str2 în locul lor.

Notă într-o carte SELECT STUFF(„Notebook”, 5, 0,” într-un „) -- Manual SELECT STUFF(„Notebook”, 1, 4, „Hand”)

SUBSTRING SUBȘIR (str1, a, lungime)

Extrage din șirul str, începând de la poziția a, un subșir de lungime.

Funcțiile sistemului

Funcțiile sistemului Transact-SQL oferă informații extinse despre obiectele bazei de date. Majoritatea funcțiilor sistemului utilizează un identificator numeric intern (ID) care este atribuit fiecărui obiect de bază de date atunci când este creat. Folosind acest identificator, sistemul poate identifica în mod unic fiecare obiect al bazei de date.

Următorul tabel listează unele dintre cele mai importante funcții ale sistemului, împreună cu scurtele lor descrieri:

Funcțiile sistemului Transact-SQL
Funcţie Sintaxă Descriere Exemplu de utilizare
CAST CAST (cu tip AS [(lungime)]

Convertește expresia w la tipul de date specificat (dacă este posibil). Argumentul w poate fi orice expresie validă.

Returnează 3 SELECT CAST (3.1258 AS INT)

COALESCE COALESCE (a1, a2)

Returnează prima valoare a expresiei din lista de expresii a1, a2, ... care nu este nulă.

COL_LENGTH COL_LENGTH (obj, col)

Returnează lungimea coloanei col a obiectului bazei de date (tabel sau vizualizare) obj.

Returnează 4 SELECT COL_LENGTH(„Angajat”, „Id”)

CONVERTIT CONVERTĂ (tip[(lungime)], w)

Echivalent cu funcția CAST, dar argumentele sunt specificate diferit. Poate fi folosit cu orice tip de date.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Returnează data și ora curente.

CURRENT_USER CURRENT_USER

Returnează numele utilizatorului curent.

Lungimea datelor DATALENGTH(z)

Returnează numărul de octeți ocupați de expresia z.

Această interogare returnează lungimea fiecărui câmp SELECT DATALENGTH(FirstName) FROM Employee

GETANSINUL GETANSINULL(„nume db”)

Returnează 1 dacă utilizarea valorilor nule în baza de date dbname respectă standardul ANSI SQL.

ISNULL ISNULL (expr, valoare)

Returnează valoarea expr dacă nu este NULL; în caz contrar, valoarea este returnată.

ISNUMERIC ISNUMERIC (expr)

Stabilește dacă expresia expr este un tip numeric valid.

NEWID NEWID()

Creează un ID de număr unic de identificare constând dintr-un șir binar de 16 octeți conceput pentru a stoca valori ale tipului de date UNIQUEIDENTIFIER.

NEWSEQUENTIALID NEWSEQUENTIALID()

Creează un GUID care este mai mare decât orice alt GUID creat anterior de această funcție pe computerul specificat. (Această funcție poate fi utilizată numai ca valoare implicită pentru o coloană.)

NULLIF NULLIF (expr1, expr2)

Returnează null dacă expresiile expr1 și expr2 au aceleași valori.

Interogarea returnează NULL pentru un proiect -- al cărui număr = "p1" SELECT NULLIF(Număr, "p1") FROM Project

PROPRIETATE SERVER SERVERPROPERTY (nume proprietate)

Returnează informații despre proprietățile serverului de baze de date.

SYSTEM_USER SYSTEM_USER

Returnează ID-ul utilizatorului curent.

ID-UL DE UTILIZATOR ID-UL DE UTILIZATOR()

Returnează numele de utilizator ID-ul utilizatorului. Dacă nu este specificat niciun utilizator, se returnează ID-ul utilizatorului curent.

USER_NAME USER_NAME()

Returnează numele de utilizator cu id-ul specificat. Dacă nu este specificat un identificator, este returnat numele utilizatorului curent.

Funcții metadate

Practic, funcțiile de metadate returnează informații despre o bază de date specificată și despre obiectele bazei de date. Tabelul de mai jos rezumă unele dintre cele mai importante funcții de metadate împreună cu scurtele lor descrieri:

Funcții de metadate Transact-SQL
Funcţie Sintaxă Descriere Exemplu de utilizare
COL_NAME COL_NAME (fila_id, col_id)

Returnează numele coloanei cu identificatorul specificat col_id al tabelului cu identificatorul tab_id.

Returnează numele coloanei „LastName” SELECT COL_NAME (OBJECT_ID(„Angajat”), 3)

COLUMNPROPRIETATE COLUMNPROPERTY (id, col, proprietate)

Returnează informații despre coloana specificată.

Returnează valoarea proprietății PRECISION -- pentru coloana Id din tabelul Employee SELECT COLUMNPROPERTY (OBJECT_ID(„Angajat”), „Id”, „precizie”)

PROPRIETATEA BAZEI DE DATE DATABASEPROPERTY (bază de date, proprietate)

Returnează valoarea proprietății proprietății bazei de date.

Returnează valoarea proprietății IsNullConcat -- pentru baza de date SampleDb SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID DB_ID()

Returnează ID-ul bazei de date db_name. Dacă nu este specificat un nume de bază de date, este returnat ID-ul bazei de date curente.

DB_NAME DB_NAME()

Returnează numele bazei de date care are db_id. Dacă nu este specificat un identificator, este returnat numele bazei de date curente.

INDEX_COL INDEX_COL (tabel, i, nu)

Returnează numele coloanei indexate a tabelului. O coloană este indicată prin identificatorul de index i și poziția coloanei nr în acel index.

INDEXPROPRIETATE INDEXPROPERTY (id_obj, nume_index, proprietate)

Returnează proprietățile unui index sau statistică denumit pentru numărul ID tabel specificat, numele indexului sau statisticii și numele proprietății.

OBJECT_NAME OBJECT_NAME (obj_id)

Returnează numele obiectului bazei de date care are identificatorul obj_id.

SELECTARE NUME_OBIECT(245575913);

OBJECT_ID OBJECT_ID (nume_obj)

Returnează identificatorul obiectului nume_obj al bazei de date.

Returnează 245575913 - ID tabel angajat SELECT OBJECT_ID(„Angajat”)

OBJECTPROPERTY OBJECTPROPERTY (obj_id, proprietate)

Returnează informații despre obiectele din baza de date curentă.

Salutări, dragi cititori ai site-ului blogului. O bază de date trebuie adesea să stocheze diferite date legate de dată și oră. Aceasta poate fi data la care au fost adăugate informațiile, data înregistrării utilizatorului, ora ultimei autorizari și alte date. ÎN Limbajul SQL Există multe funcții legate de dată și oră, așa că astăzi le vom analiza.

Toate funcțiile discutate mai jos funcționează cu tipuri de date calendaristice.

Obținerea datei și orei curente.

A obține data și ora curente funcția este utilizată ACUM().

SELECTAȚI ACUM()
Rezultat: 25-09-2015 14:42:53

Pentru a primi doar data curentă exista o functie CURDATE().

SELECTARE CURDATE()
Rezultat: 25-09-2015

Și funcționalitate CURTIME(), care se întoarce numai ora curentă:

SELECTARE CURTIME()
Rezultat: 14:42:53

Funcțiile CURDATE() și NOW() sunt utile pentru adăugarea înregistrărilor la o bază de date pentru care doriți să stocați data la care au fost adăugate. De exemplu, atunci când adăugați un articol pe un site web, ar fi o idee bună să stocați data publicării acestuia. Apoi, cererea de a adăuga un articol la baza de date va fi cam așa:

INSERT INTO posts (id_post, text_post, data_publication) VALUES (1, „text articol”, NOW ());

Adunarea și scăderea datelor și orelor

Funcţie ADDDATE (data, valoare INTERVAL) adaugă până în prezent data sens valoare și returnează valoarea rezultată. Următoarele valori pot fi folosite ca valoare:

  • A DOUA - secunde
  • MINUT - minute
  • HOUR - ore
  • ZI - zile
  • SĂPTĂMÂNĂ - săptămâni
  • LUNA - luni
  • SFERTUL - blocuri
  • AN - ani

precum și combinațiile lor:

  • MINUTE_SECOND - minute și secunde
  • HOUR_SECOND ore - minute și secunde
  • HOUR_MINUTE - ore și minute
  • DAY_SECOND - zile, ore, minute și secunde
  • DAY_MINUTE - zile, ore și minute
  • DAY_HOUR - zile și ore
  • YEAR_MONTH - ani și luni.

SELECTAȚI ADAUGĂ ("2015-09-28 10:30:20", INTERVAL 1 DAY)
Rezultat: 29-09-2015 10:30:20

SELECTARE ADDDATE ("2015-09-28 10:30:20", INTERVAL "3 1:20" DAY_MINUTE)
Rezultat: 2015-10-01 11:50:20

Funcţie SUBDATE (data, valoare INTERVAL) produce scădere valorile de la data data. Exemplu:

SELECTAȚI SUBDATE ("2015-09-28 10:30:20", INTERVAL 20 HOUR)
Rezultat: 27-09-2015 14:30:20

Funcţie PERIOD_ADD(perioadă, n) adaugă la perioada valoric n luni. Valoarea perioadei trebuie să fie în format AAAAMM (de exemplu, septembrie 2015 ar fi 201509). Exemplu:

SELECTARE PERIOD_ADD (201509, 4)
Rezultat: 201601

Funcţie TIMESTAMPADD(interval, n, dată) adaugă până în prezent data interval de timp n , ale cărui valori sunt specificate de parametrul interval. Valori posibile pentru parametrul interval:

  • FRAC_SECOND - microsecunde
  • A DOUA - secunde
  • MINUT - minute
  • HOUR - ore
  • ZI - zile
  • SĂPTĂMÂNĂ - săptămâni
  • LUNA - luni
  • SFERTUL - blocuri
  • AN - ani

SELECTARE TIMESTAMPADD (TRIMESTRE, 1, „2015-09-28”)
Rezultat: 28-12-2015

Funcţie SUBTIME (data, ora) scade din data data timp timp. Exemplu:

SELECT SUBTIME ("2015-09-28 10:30:20", "50:20:19")
Rezultat: 26-09-2015 08:10:01

Calcularea intervalului dintre date

Funcţie TIMEDIFF(data1, data2) calculează diferența în ore, minute și secundeîntre două date data1 și data2 . Exemplu:

SELECT TIMEDIFF ("2015-09-28 10:30:20", "2015-09-29 10:30:20")
Rezultat: -24:10:00

Funcţie DATEDIFF(data1, data2) calculează diferenta in zileîntre două date, în timp ce orele, minutele și secundele sunt ignorate la specificarea datelor. Exemplu:

SELECT DATEDIFF ("2015-09-28 00:00:20", "2015-09-27 23:40:20")
Rezultat: 1

Folosind această funcție, este ușor să determinați câte zile au trecut de la data publicării articolului:

SELECTAȚI DATEDIFF (CURDATE(), data_publicare) FROM postările WHERE id_post = 1

Funcţie PERIOD_DIFF (perioada 1, perioada 2) calculează diferenta in luniîntre două date. Datele trebuie să fie în format AAAAA. De exemplu, să aflăm câte luni au trecut din ianuarie 2015 până în septembrie 2015:

SELECTARE PERIOD_DIFF (201509, 201501)
Rezultat: 9

Funcţie TIMESTAMPDIFF(interval, data1, data2) calculează diferența dintre datele date2 și date1 în unitățile specificate în parametrul interval. În acest caz, intervalul poate lua următoarele valori:

  • FRAC_SECOND - microsecunde
  • A DOUA - secunde
  • MINUT - minute
  • HOUR - ore
  • ZI - zile
  • SĂPTĂMÂNĂ - săptămâni
  • LUNA - luni
  • SFERTUL - blocuri
  • AN - ani

SELECTARE TIMESTAMPDIFF (ORĂ, „2015-09-28 10:30:20”, „2015-09-28 19:50:20”)
Rezultat: 9

Preluarea diferitelor formate de dată și oră și alte informații

Funcţie DATE (data ora) se întoarce data, ora limită. Exemplu:

SELECTARE DATA ("2015-09-28 10:30:20")
Rezultat: 28-09-2015

Funcţie TIME (data ora) se întoarce ora, data de decupare. Exemplu:

SELECTARE ORA ("2015-09-28 10:30:20")
Rezultat: 10:30:20

Funcţie TIMESTAMP (data) se întoarce format complet de-a lungul timpului date data . Exemplu:

TIMESTAMP("2015-09-28")
Rezultat: 28-09-2015 00:00:00

ZI (data)Şi DAYOFMONTH (data). Funcții sinonime care revin numărul de ordine al zilei lunii. Exemplu:

SELECTAȚI ZIUA ("2015-09-28"), DAYOFMONTH ("2015-09-28")
Rezultat: 28 | 28

Funcții DAYNAME (data),DAYOFWEEK (data)Şi ZIUA SĂPTĂMNICĂ (data). Prima funcție revine numele zilei săptămânii, a doua - numărul zilei săptămânii(numaratoare de la 1 - duminica la 7 - sambata), a treia este si numarul zilei saptamanii, doar o alta numaratoare inversa (numaratoare de la 0 - luni, la 6 - duminica). Exemplu:

SELECTAȚI NUMELE ZIII ("2015-09-28"), DAYOFWEEK ("2015-09-28"), WEEKDAY ("2015-09-28")
Rezultat: luni 2 | 0

Funcții SĂPTĂMÂNĂ (data)Şi WEEKOFYEAR (data-ora). Ambele funcții revin numărul săptămânii din an, doar prima săptămână începe duminică, iar a doua luni. Exemplu:

SELECTARE SĂPTĂMÂNĂ ("2015-09-28 10:30:20"), WEEKOFYEAR ("2015-09-28 10:30:20")
Rezultat: 39 | 40

Funcţie LUNA (data) se întoarce valoarea numerică a lunii(de la 1 la 12) și MONTHNAME (data) numele lunii. Exemplu:

SELECTARE LUNA ("2015-09-28 10:30:20"), MONTHNAME ("2015-09-28 10:30:20")
Rezultat: 9 | septembrie

Funcţie TRIMER (data) se întoarce numărul blocului ani (de la 1 la 4). Exemplu:

SELECTARE TRIMESTRE ("2015-09-28 10:30:20")
Rezultat: 3

Funcţie AN (data) se întoarce valoarea anului(de la 1000 la 9999). Exemplu:

SELECTARE AN ("2015-09-28 10:30:20")
Rezultat: 2015

Funcţie DAYOFYEAR (data) se întoarce numărul de serie al zilei pe an (de la 1 la 366). Grund:

SELECTARE DAYOFYEAR ("2015-09-28 10:30:20")
Rezultat: 271

Funcţie ORA (data ora) se întoarce valoarea oră(de la 0 la 23). Exemplu:

SELECTARE ORA ("2015-09-28 10:30:20")
Rezultat: 10

Funcţie MINUT (data-ora) se întoarce valoarea minutelor(de la 0 la 59). Exemplu:

SELECTARE MINUT ("2015-09-28 10:30:20")
Rezultat: 30

Funcţie SECOND (data-ora) se întoarce valoarea secundelor(de la 0 la 59). Exemplu:

SELECTARE SECUNDA ("2015-09-28 10:30:20")
Rezultat: 20

Funcţie EXTRACT (introduceți data FROM) returnează partea dată specificată de parametrul tip. Exemplu:

SELECTAȚI EXTRAS (ANUL DIN „2015-09-28 10:30:20”), EXTRAS (LUNA DIN „2015-09-28 10:30:20”), EXTRAS (ZIA DIN „2015-09-28 10:30”) :20"), EXTRAS (ORĂ DE LA „2015-09-28 10:30:20”), EXTRAS (MINUT DE LA „2015-09-28 10:30:20”), EXTRAS (AL DOILEA DIN „2015-09- 28 10:30:20")
Rezultat: 2015 | 9 | 28 | 10 | 30 | 20

Funcții reciproce TO_DAYS (data)Şi FROM_DAYS(n). Primul convertește data în număr de zile, trecut din anul zero. Al doilea, dimpotrivă, acceptă număr de zile, trecut din anul zero si le convertește în prezent. Exemplu:

SELECT TO_DAYS ("2015-09-28 10:30:20"), FROM_DAYS (736234)
Rezultat: 736234 | 28-09-2015

Funcții reciproce UNIX_TIMESTAMP (data)Şi FROM_UNIXTIME(n). Primul convertește data în număr de secunde trecut de la 1 ianuarie 1970. Al doilea, dimpotrivă, acceptă număr de secunde, de la 1 ianuarie 1970 și le convertește în prezent. Exemplu:

SELECT UNIX_TIMESTAMP ("2015-09-28 10:30:20"), FROM_UNIXTIME (1443425420)
Rezultat: 1443425420 | 28-09-2015 10:30:20

Funcții reciproce TIME_TO_SEC (timp)Şi SEC_TO_TIME(n). Primul convertește timpul în număr de secunde, a trecut de la începutul zilei. Al doilea, dimpotrivă, ia numărul de secunde de la începutul zilei și le transformă în timp. Exemplu:

SELECTAȚI TIME_TO_SEC ("10:30:20"), SEC_TO_TIME (37820)
Rezultat: 37820 | 10:30:20

Funcţie MAKEDATE (an, n) ia anul anul și numărul zilei din anul n și le convertește într-o dată. Exemplu.