Datumske funkcije u sql opisu. Transact-SQL funkcije. Izračunavanje intervala između datuma

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Pozdrav, dragi čitatelji bloga. Baza podataka često treba pohraniti različite podatke koji se odnose na datum i vrijeme. To može biti datum dodavanja informacija, datum registracije korisnika, vrijeme zadnje autorizacije i drugi podaci. U SQL jezik Postoji mnogo funkcija povezanih s datumom i vremenom, pa ćemo ih danas pogledati.

Sve dolje navedene funkcije rade s tipovima podataka kalendara.

Dobivanje trenutnog datuma i vremena.

Dobiti trenutni datum i vrijeme koristi se funkcija SADA().

ODABERI SADA()
Rezultat: 2015-09-25 14:42:53

Samo primati trenutni datum postoji funkcija CURDATE().

ODABIR CURDATE()
Rezultat: 2015-09-25

I funkcija CURTIME(), koji vraća samo Trenutno vrijeme:

ODABIR CURTIME()
Rezultat: 14:42:53

Funkcije CURDATE() i NOW() korisne su za dodavanje zapisa u bazu podataka za koju želite pohraniti dodan datum. Na primjer, kada dodajete članak na web stranicu, bilo bi dobro pohraniti datum objave. Tada će zahtjev za dodavanje članka u bazu biti otprilike ovakav:

INSERT INTO postove (id_post, text_post, date_publication) VRIJEDNOSTI (1, "tekst članka", SADA ());

Zbrajanje i oduzimanje datuma i vremena

Funkcija ADDDATE (datum, INTERVAL vrijednost) dodaje do danas datum značenje vrijednost i vraća rezultirajuću vrijednost. Sljedeće vrijednosti mogu se koristiti kao vrijednost:

  • SEKUNDA - sekunde
  • MINUTE - minute
  • SAT - sati
  • DAN - dani
  • TJEDAN - tjedni
  • MJESEC - mjeseci
  • KVARTAL - blokovi
  • GODINA - godine

kao i njihove kombinacije:

  • MINUTE_SECOND - minute i sekunde
  • HOUR_SECOND sati - minute i sekunde
  • HOUR_MINUTE - sati i minute
  • DAY_SECOND - dani, sati, minute i sekunde
  • DAY_MINUTE - dani, sati i minute
  • DAY_HOUR - dani i sati
  • YEAR_MONTH — godine i mjeseci.

ODABERITE DODAJ ("2015-09-28 10:30:20", INTERVAL 1 DAN)
Rezultat: 2015-09-29 10:30:20

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

Funkcija PODDATUM (datum, INTERVAL vrijednost) proizvodi oduzimanje vrijednosti od datuma datum. Primjer:

ODABERITE PODDATUM ("2015-09-28 10:30:20", INTERVAL 20 SATI)
Rezultat: 2015-09-27 14:30:20

Funkcija PERIOD_ADD(točka, n) dodaje na razdoblje vrijednosti n mjeseca. Vrijednost razdoblja mora biti u formatu GGGGMM (na primjer, rujan 2015. bio bi 201509). Primjer:

SELECT PERIOD_ADD (201509, 4)
Rezultat: 201601

Funkcija TIMESTAMPADD(interval, n, datum) dodaje do danas datum vremenski interval n, čije su vrijednosti određene intervalnim parametrom. Moguće vrijednosti za parametar intervala:

  • FRAC_SECOND - mikrosekunde
  • SEKUNDA - sekunde
  • MINUTE - minute
  • SAT - sati
  • DAN - dani
  • TJEDAN - tjedni
  • MJESEC - mjeseci
  • KVARTAL - blokovi
  • GODINA - godine

ODABERITE TIMESTAMPADD (TROMJESEČJE, 1, "2015-09-28")
Rezultat: 2015-12-28

Funkcija PODVRIJEME (datum, vrijeme) oduzima od datuma datum vrijeme vrijeme. Primjer:

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

Izračunavanje intervala između datuma

Funkcija TIMEDIFF(datum1, datum2) izračunava razliku u satima, minutama i sekundama između dva datuma datum1 i datum2 . Primjer:

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

Funkcija DATEDIFF(datum1, datum2) izračunava razlika u danima između dva datuma, dok se sati, minute i sekunde zanemaruju prilikom navođenja datuma. Primjer:

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

Pomoću ove funkcije lako je odrediti koliko je dana prošlo od datuma objave članka:

SELECT DATEDIFF (CURDATE(), date_publication) FROM postova WHERE id_post = 1

Funkcija PERIOD_DIFF (period1, period2) izračunava razlika u mjesecima između dva datuma. Datumi moraju biti u formatu GGGGMM. Na primjer, saznajmo koliko je mjeseci prošlo od siječnja 2015. do rujna 2015.:

SELECT PERIOD_DIFF (201509, 201501)
Rezultat: 9

Funkcija TIMESTAMPDIFF(interval, datum1, datum2) izračunava razliku između datuma datum2 i datum1 u jedinicama navedenim u parametru intervala. U ovom slučaju interval može imati sljedeće vrijednosti:

  • FRAC_SECOND - mikrosekunde
  • SEKUNDA - sekunde
  • MINUTE - minute
  • SAT - sati
  • DAN - dani
  • TJEDAN - tjedni
  • MJESEC - mjeseci
  • KVARTAL - blokovi
  • GODINA - godine

ODABERITE TIMESTAMPDIFF (SATI, "2015-09-28 10:30:20", "2015-09-28 19:50:20")
Rezultat: 9

Dohvaćanje različitih formata datuma i vremena te drugih informacija

Funkcija DATUM (datum i vrijeme) vraća datum, vrijeme prekida. Primjer:

ODABIR DATUM("2015-09-28 10:30:20")
Rezultat: 2015-09-28

Funkcija VRIJEME (datum i vrijeme) vraća vrijeme, krajnji datum. Primjer:

ODABERITE VRIJEME ("2015-09-28 10:30:20")
Rezultat: 10:30:20

Funkcija TIMESTAMP (datum) vraća puni format tijekom vremena datumi datum. Primjer:

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

DAN (datum) I DAYOFMONTH (datum). Sinonimne funkcije koje vraćaju redni broj dana u mjesecu. Primjer:

SELECT DAY("2015-09-28"), DAYOFMONTH("2015-09-28")
Rezultat: 28 | 28

Funkcije DAYNAME (datum),DAN TJEDNA (datum) I RADNI DAN (datum). Vraća se prva funkcija naziv dana u tjednu, drugi - broj dana u tjednu(broji se od 1 - nedjelja do 7 - subota), treći je ujedno i broj dana u tjednu, samo još jedno odbrojavanje (broji se od 0 - ponedjeljak, do 6 - nedjelja). Primjer:

SELECT DAYNAME("2015-09-28"), DAYOFWEEK("2015-09-28"), WEEKDAY("2015-09-28")
Rezultat: ponedjeljak 2 | 0

Funkcije TJEDAN (datum) I WEEKOFYEAR (datum i vrijeme). Obje funkcije se vraćaju broj tjedna u godini, samo prvi tjedan počinje u nedjelju, a drugi u ponedjeljak. Primjer:

ODABERITE TJEDAN ("2015-09-28 10:30:20"), WEEKOFYEAR ("2015-09-28 10:30:20")
Rezultat: 39 | 40

Funkcija MJESEC (datum) vraća numerička vrijednost mjeseca(od 1 do 12), i MONTHNAME (datum) ime mjeseca. Primjer:

SELECT MONTH("2015-09-28 10:30:20"), MONTHNAME("2015-09-28 10:30:20")
Rezultat: 9 | rujan

Funkcija KVARTAL (datum) vraća broj bloka godine (od 1. do 4.). Primjer:

ODABERITE KVARTAL ("2015-09-28 10:30:20")
Rezultat: 3

Funkcija GODINA (datum) vraća godišnja vrijednost(od 1000 do 9999). Primjer:

ODABERITE GODINU ("2015-09-28 10:30:20")
Rezultat: 2015

Funkcija DAYOFYEAR (datum) vraća redni broj dana godišnje (od 1 do 366). Primer:

ODABERITE DAN GODINE ("2015-09-28 10:30:20")
Rezultat: 271

Funkcija SAT (datum i vrijeme) vraća satna vrijednost(od 0 do 23). Primjer:

ODABERITE SAT ("2015-09-28 10:30:20")
Rezultat: 10

Funkcija MINUTE (datum i vrijeme) vraća vrijednost minuta(od 0 do 59). Primjer:

ODABERITE MINUTU ("2015-09-28 10:30:20")
Rezultat: 30

Funkcija DRUGI (datum i vrijeme) vraća vrijednost sekundi(od 0 do 59). Primjer:

ODABERITE DRUGI ("2015-09-28 10:30:20")
Rezultat: 20

Funkcija IZVOD (tip IZ datuma) vraća datumski dio određen parametrom tipa. Primjer:

ODABERI IZVOD (GODINA IZ "2015-09-28 10:30:20"), IZVOD (MJESEC IZ "2015-09-28 10:30:20"), IZVOD (DAN IZ "2015-09-28 10:30) :20"), ISJEČAK (SAT IZ "2015-09-28 10:30:20"), ISJEČAK (MINUTA IZ "2015-09-28 10:30:20"), ISJEČAK (DRUGI IZ "2015-09- 28 10:30:20")
Rezultat: 2015 | 9 | 28 | 10 | 30 | 20

Recipročne funkcije Današnji datum) I FROM_DAYS(n). Prvi pretvara datum u broj dana, prošao od nulte godine. Drugi, naprotiv, prihvaća broj dana, prošao od nulte godine i pretvara ih u datum. Primjer:

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

Recipročne funkcije UNIX_TIMESTAMP (datum) I FROM_UNIXTIME(n). Prvi pretvara datum u broj sekundi donesen od 01.01.1970. Drugi, naprotiv, prihvaća broj sekundi, od 1. siječnja 1970. i pretvara ih u datum. Primjer:

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

Recipročne funkcije TIME_TO_SEC (vrijeme) I SEC_TO_TIME(n). Prvi pretvara vrijeme u broj sekundi, prošao je od početka dana. Drugi, naprotiv, uzima broj sekundi od početka dana i pretvara ih u vrijeme. Primjer:

SELECT TIME_TO_SEC ("10:30:20"), SEC_TO_TIME (37820)
Rezultat: 37820 | 10:30:20

Funkcija DATUM IZRADE (godina, n) uzima godinu godinu i broj dana u godini n i pretvara ih u datum. Primjer.

SQL - Lekcija 13. Funkcije datuma i vremena

Ove su funkcije dizajnirane za rad s vrstama podataka kalendara. Pogledajmo najprimjenjivije.
  • CURDATE(), CURTIME() i NOW() Prva funkcija vraća trenutni datum, druga vraća trenutno vrijeme, a treća vraća trenutni datum i vrijeme. Usporedi:

    SELECT CURDATE(), CURTIME(), NOW();


    Funkcije CURDATE() i NOW() korisne su za dodavanje zapisa u bazu podataka koji koriste trenutno vrijeme. U našoj trgovini sve dostave i prodaje rade prema trenutnom vremenu. Stoga je za dodavanje zapisa o isporukama i prodaji prikladno koristiti funkciju CURDATE(). Na primjer, recimo da je proizvod stigao u našu trgovinu, dodajmo podatke o njemu u tablicu Isporuka (dolazna):

    INSERT INTO incoming (id_vendor, date_incoming) VALUES ("2", curdate());


    Ako smo datum isporuke pohranjivali s tipom datatime, tada bi nam funkcija NOW() bila prikladnija.

  • ADDDATE(datum, INTERVAL vrijednost) Funkcija vraća datum s dodanom vrijednošću. Vrijednost vrijednosti može biti negativna, tada će se konačni datum smanjiti. Pogledajmo kada su naši dobavljači isporučili robu:

    SELECT id_vendor, date_incoming FROM incoming;


    Pretpostavimo da smo pogriješili prilikom unosa datuma za prvog dobavljača, smanjimo njegov datum za jedan dan:
    Vrijednost može biti ne samo dani, već i tjedni (WEEK), mjeseci (MONTH), kvartali (QUARTER) i godine (YEAR). Na primjer, smanjimo datum isporuke za drugog dobavljača za 1 tjedan:
    U našoj tablici Isporuke (dolazno), upotrijebili smo vrstu datuma za stupac Datum isporuke (datum_dolaza). Kao što se sjećate iz lekcije 2, ova vrsta podataka je dizajnirana za pohranu samo datuma. Ali ako bismo koristili tip datatime, tada bismo prikazali ne samo datum, već i vrijeme. Tada bismo mogli koristiti i funkciju ADDDATE za vrijeme. Vrijednost u ovom slučaju može biti sekunda (SECOND), minuta (MINUTE), sati (HOUR) i njihove kombinacije:
    minute i sekunde (MINUTE_SECOND),
    sati, minute i sekunde (HOUR_SECOND),
    sati i minute (HOUR_MINUTE),
    dani, sati, minute i sekunde (DAY_SECOND),
    dani, sati i minute (DAY_MINUTE),
    dani i sati (DAY_HOUR),
    godine i mjeseci (YEAR_MONTH).
    Na primjer, dodajmo dva sata i 45 minuta datumu 15. travnja 2011.:

    SELECT ADDDATE("2011-04-15 00:02:00", INTERVAL "02:45" HOUR_MINUTE);



  • SUBDATE(datum, INTERVAL vrijednost) funkcija je identična prethodnoj, ali izvodi operaciju oduzimanja umjesto zbrajanja.

    SELECT SUBDATE("2011-04-15 00:02:00", INTERVAL "23:53" HOUR_MINUTE);



  • Funkcija PERIOD_ADD(period, n) dodaje n mjeseci razdoblju vrijednosti datuma. Napomena: vrijednost datuma mora biti u formatu GGGGMM. Dodajmo 2 mjeseca veljači 2011. (201102):

    SELECT PERIOD_ADD(201102, 2);



  • TIMESTAMPADD(interval, n, datum) funkcija dodaje vremenski interval n datumu datuma, čije su vrijednosti navedene parametrom intervala. Moguće vrijednosti za parametar intervala:

    FRAC_SECOND - mikrosekunde
    SEKUNDA - sekunde
    MINUTE - minute
    SAT - sati
    DAN - dani
    TJEDAN - tjedni
    MJESEC - mjeseci
    KVARTAL - blokovi
    GODINA - godine

    SELECT TIMESTAMPADD(DAN, 2, "2. 4. 2011.");



  • TIMEDIFF(datum1, datum2) izračunava razliku u satima, minutama i sekundama između dva datuma.

    SELECT TIMEDIFF("2011-04-17 23:50:00", "2011_04-16 14:50:00");



  • DATEDIFF(datum1, datum2) izračunava razliku u danima između dva datuma. Na primjer, želimo saznati prije koliko nas je dobavljač "Williams" (id=1) opskrbljivao robom:

  • Funkcija PERIOD_DIFF(period1, period2) izračunava razliku u mjesecima između dva datuma predstavljena u formatu GGGGMM. Otkrijmo razliku između siječnja 2010. i kolovoza 2011.:

    SELECT PERIOD_DIFF(201108, 201001);



  • TIMESTAMPDIFF(interval, datum1, datum2) funkcija izračunava razliku između datuma date2 i date1 u jedinicama navedenim u parametru interval. Moguće vrijednosti za parametar intervala:

    FRAC_SECOND - mikrosekunde
    SEKUNDA - sekunde
    MINUTE - minute
    SAT - sati
    DAN - dani
    TJEDAN - tjedni
    MJESEC - mjeseci
    KVARTAL - blokovi
    GODINA - godine

    SELECT TIMESTAMPDIFF(DAY, "2011-04-02", "2011-04-17") AS dana, TIMESTAMPDIFF(HOUR, "2011-04-16 20:14:00", "2011-04-17 23:58 :20") AS sati;



  • SUBTIME(datum, vrijeme) funkcija oduzima vrijeme od datuma vremena:

    SELECT SUBTIME("2011-04-18 23:17:00", "02:15:30");



  • DATE(datumvrijeme) vraća datum, skraćujući vrijeme. Na primjer:

    SELECT DATE("2011-04-15 00:03:20");



  • TIME(datumvrijeme) vraća vrijeme, skraćujući datum. Na primjer:

    SELECT TIME("2011-04-15 00:03:20");



  • Funkcija TIMESTAMP(datum) uzima datum i vraća Puna verzija s vremenom. Na primjer:

    SELECT TIMESTAMP("2011-04-17");



  • DAY(datum) i DAYOFMONTH(datum) su sinonimne funkcije koje vraćaju serijski broj dana u mjesecu od datuma:

    SELECT DAY("2011-04-17"), DAYOFMONTH("2011-04-17");



  • DAYNAME(datum), DAYOFWEEK(datum) i WEEKDAY(datum) funkcije vraćaju dan u tjednu, prva - njegov naziv, druga - broj dana u tjednu (brojeći od 1 - nedjelja do 7 - subota), treća - broj dana u tjednu (brojeći od 0 - ponedjeljak, do 6 - nedjelja:

    SELECT DAYNAME("2011-04-17"), DAYOFWEEK("2011-04-17"), WEEKDAY("2011-04-17");



  • WEEK(datum), WEEKOFYEAR(datumvrijeme) obje funkcije vraćaju broj tjedna u godini, prva za tip datuma, a druga za tip datumvrijeme, prva ima tjedan koji počinje od nedjelje, druga - od ponedjeljka:

    SELECT WEEK("2011-04-17"), WEEKOFYEAR("2011-04-17 23:40:00");



  • MONTH(datum) i MONTHNAME(datum) obje funkcije vraćaju mjesečne vrijednosti. Prva je njegova brojčana vrijednost (od 1 do 12), druga je naziv mjeseca:

    SELECT MONTH("2011-04-17"), MONTHNAME("2011-04-17");



  • Funkcija QUARTER(datum) vraća vrijednost tromjesečja u godini (od 1 do 4):

    SELECT QUARTER("2011-04-17");



  • Funkcija YEAR(datum) vraća vrijednost godine (od 1000 do 9999):

    SELECT YEAR("2011-04-17");



  • DAYOFYEAR(datum) vraća redni broj dana u godini (od 1 do 366):

    SELECT DAYOFYEAR("2011-04-17");



  • HOUR(datumvrijeme) vraća vrijednost sata za vrijeme (0 do 23):

    SELECT HOUR("2011-04-17 18:20:03");



  • MINUTE(datumvrijeme) vraća vrijednost minuta za vrijeme (od 0 do 59): SELECT UNIX_TIMESTAMP("2011-04-17"), FROM_UNIXTIME(1302524000);

  • TIME_TO_SEC(vrijeme) i SEC_TO_TIME(n) recipročne funkcije. Prvi pretvara vrijeme u broj sekundi koje su prošle od početka dana. Drugi, naprotiv, uzima broj sekundi od početka dana i pretvara ih u vrijeme:

    SELECT TIME_TO_SEC("22:10:30"), SEC_TO_TIME(45368);



  • Funkcija MAKEDATE(godina, n) uzima broj godine i dana u godini i pretvara ih u datum:

    SELECT MAKEDATE(2011, 120);



Pa, to je sve za danas. Sljedeći put ćemo pogledati funkcije koje pomažu pretvoriti datume iz jednog formata u drugi.

Funkcije jezika Transact-SQL mogu biti agregatne ili skalarne. O ovim vrstama funkcija raspravlja se u ovom članku.

Agregatne funkcije

Skupne funkcije izvode izračune na grupi vrijednosti stupaca i uvijek vraćaju jednu vrijednost kao rezultat tih izračuna. Transact-SQL podržava nekoliko uobičajenih skupnih funkcija:

PROSJ

Izračunava aritmetički prosjek podataka sadržanih u stupcu. Vrijednosti na kojima se vrši izračun moraju biti numeričke.

MIN i MAX

Odredi maksimum i minimalna vrijednost od svih vrijednosti podataka sadržanih u stupcu. Vrijednosti mogu biti numeričke, znakovne ili vremenske (datum/vrijeme).

IZNOS

Izračunava ukupni zbroj vrijednosti u stupcu. Vrijednosti na kojima se vrši izračun moraju biti numeričke.

RAČUNATI

Broji broj vrijednosti koje nisu nula u stupcu. Funkcija count(*) jedina je agregatna funkcija koja ne izvodi izračune na stupcima. Ova funkcija vraća broj redaka (bez obzira na to sadrže li pojedinačni stupci nulte vrijednosti).

COUNT_BIG

Slično funkciji brojanja, s tom razlikom što vraća vrijednost podataka BIGINT.

O korištenju regularnih agregatnih funkcija u naredbi SELECT raspravljat ćemo u sljedećem članku.

Skalarne funkcije

Transact-SQL skalarne funkcije koriste se u stvaranju skalarnih izraza. (Skalarna funkcija izvodi izračune na jednoj vrijednosti ili popisu vrijednosti, dok agregatna funkcija izvodi izračune na grupi vrijednosti u više redaka.) Skalarne funkcije mogu se raščlaniti u sljedeće kategorije:

    numeričke funkcije;

    funkcije datuma;

    funkcije niza;

    funkcije sustava;

    funkcije metapodataka.

O ovim vrstama funkcija raspravlja se u sljedećim odjeljcima.

Numeričke funkcije

Numeričke funkcije Transact-SQL matematičke su funkcije za izmjenu numeričkih vrijednosti. Popis numeričkih funkcija i njihovi kratki opisi dani su u tablici ispod:

Numeričke funkcije Transact-SQL
Funkcija Sintaksa Opis Primjer upotrebe
ABS ABS (n)

Vraća apsolutnu vrijednost (tj. negativne vrijednosti vraćaju se kao pozitivni) numerički izraz n.

SELECT ABS(-5.320) -- Vraća 5.320 SELECT ABS(8.90) -- Vraća 8.90

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

Inverzne trigonometrijske funkcije koje izračunavaju arkkosinus, arksinus, arktangens vrijednosti n (za ATN2 izračunava se arktangens n/m). Ulazne vrijednosti n, m i rezultat su tipa podataka FLOAT.

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

Trigonometrijske funkcije koje izračunavaju kosinus, sinus, tangens, kotangens vrijednosti n. Rezultat ima tip podataka FLOAT.

STUPNJEVI, RADIJANI STUPNJEVI(n), RADIJANI(n)

Funkcija DEGREES pretvara radijane u stupnjeve, RADIJANE, odnosno, obrnuto.

SELECT DEGREES(PI() / 4) -- Vraća 45 SELECT COS(RADIANS(60.0)) -- Vraća 0,5

STROP STROP(n)

Zaokružuje broj na višu vrijednost cijelog broja.

SELECT CEILING(-5.320) -- Vraća -5 SELECT CEILING(8.90) -- Vraća 9

KRUG OKRUGLO(n, p, [t])

Zaokružuje vrijednost n na najbližu p. Kada je argument str pozitivan broj, zaokružuje se razlomački dio broja n, a kada je negativan, zaokružuje se cijeli broj. Kada se koristi izborni argument t, broj n nije zaokružen, već skraćen (tj. zaokružen prema dolje).

SELECT ROUND(5.3208, 3) -- Vraća 5.3210 SELECT ROUND(125.384, -1) -- Vraća 130.000 SELECT ROUND(125.384, -1, 1) -- Vraća 120.000

KAT KAT(n)

Zaokružuje na najnižu vrijednost cijelog broja.

SELECT FLOOR(5.88) -- Vraća 5

EXP EXP(n)

Izračunava vrijednost e n .

DNEVNIK, DNEVNIK10 LOG(n), LOG10(n)

LOG(n) - izračunava prirodni logaritam (tj. baza e) broja n, LOG10(n) - izračunava decimalni (baza 10) logaritam broja n.

P.I. PI()

Vraća vrijednost π (3,1415).

VLAST POWER(x, y)

Izračunava vrijednost x y.

RAND RAND()

Vraća proizvoljan broj tipa FLOAT u rasponu vrijednosti između 0 i 1.

ROWCOUNT_VELIKI ROWCOUNT_BIG()

Vraća broj obrađenih redaka tablice posljednja uputa Transact-SQL koji izvršava sustav. Povratna vrijednost je tipa BIGINT.

ZNAK ZNAK(n)

Vraća predznak n kao broj: +1 ako je pozitivan, -1 ako je negativan.

SQRT, KVADRAT SQRT(n), SQUARE(n)

SQRT(n) - izračunava kvadratni korijen broja n, SQUARE(n) - vraća kvadrat argumenta n.

Funkcije datuma

Funkcije datuma procjenjuju odgovarajuće dijelove izraza s datumom ili vremenom ili vraćaju vrijednost vremenskog intervala. Podržano u Transact- SQL funkcije Datumi i njihovi kratki opisi dati su u tabeli ispod:

Transact-SQL funkcije datuma
Funkcija Sintaksa Opis Primjer upotrebe
DOBITI DATUM GETDATE()

Vraća trenutni sistemski datum i vrijeme.

ODABIR GETDATE()

DATEPART DATEPART (stavka, datum)

Vraća datumski dio naveden u parametru stavke kao cijeli broj.

Vraća 1 (siječanj) SELECT DATEPART(mjesec, "01/01/2012") -- vraća 4 (srijeda) SELECT DATEPART(dan u tjednu, "01/02/2012")

DATENAME DATENAME (stavka, datum)

Vraća datumski dio naveden u parametru stavke kao niz znakova.

Vraća siječanj SELECT DATENAME(mjesec, "01/01/2012") -- vraća srijeda SELECT DATENAME(radni dan, "01/02/2012")

DATEDIFF DATEDIFF (stavka, dat1, dat2)

Izračunava razliku između dva dijela datuma dat1 i dat2 i vraća cjelobrojni rezultat u jedinicama navedenim u argumentu stavke.

Vraća 19 (19-godišnji interval između datuma) SELECT DATEDIFF(godina, "01/01/1990", "01/01/2010") -- Vraća 7305 (7305 dana interval između datuma) SELECT DATEDIFF(dan, "01/01 /1990", "01/01" .2010")

DATEADD DATEADD (stavka, n, datum)

dodaje n-ta količina jedinice navedene u argumentu stavke za navedeni datum datum. (n također može biti negativan.)

Dodat će 3 dana trenutnom datumu SELECT DATEADD(dan, 3, GETDATE())

String funkcije

String funkcije manipuliraju vrijednostima stupaca, koje su tipično znakovni tipovi podataka. Podržane funkcije nizova u Transact-SQL-u i njihovi kratki opisi navedeni su u tablici u nastavku:

Transact-SQL funkcije niza
Funkcija Sintaksa Opis Primjer upotrebe
ASCII, UNICODE ASCII(znak), UNICODE(znak)

Pretvara navedeni znak u odgovarajući cijeli broj ASCII koda.

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

ČAR, NČAR CHAR(int), NCHAR(int)

Pretvara ASCII kod (ili Unicode ako je NCHAR) u odgovarajući znak.

SELECT CHAR(87) -- "W" SELECT NCHAR(1102) -- "yu"

CHARINDEX CHARINDEX (str1, str2)

Vraća početnu poziciju pojavljivanja podniza str1 u nizu str2. Ako niz str2 ne sadrži podstring str1, vraća se vrijednost 0

Vraća 5 SELECT CHARINDEX ("morf", "polimorfizam")

RAZLIKA RAZLIKA (str1, str2)

Vraća cijeli broj između 0 i 4 koji je razlika između SOUNDEX vrijednosti dva niza str1 i str2. Metoda SOUNDEX vraća broj koji karakterizira zvuk žice. Pomoću ove metode možete identificirati žice sličnog zvuka. Radi samo za ASCII znakove.

Vraća 2 SELECT DIFFERENCE ("spelling", "telling")

LIJEVO DESNO LIJEVO (str, duljina), DESNO (str, duljina)

Vraća broj prvih znakova niza str specificiranih parametrom duljine za LEFT i zadnjih znakova duljine niza str za funkciju RIGHT.

DECLARE @str nvarchar(30) = "Sinkronizacija"; -- Vraća "Sync" SELECT LIJEVO (@str, 4) -- Vraća "Zation" SELECT RIGHT (@str, 5)

LEN LEN(str)

Vraća broj znakova (ne broj bajtova) niza str navedenih u argumentu, uključujući razmake na kraju.

DONJI, GORNJI LOWER(str), UPPER(str)

Funkcija LOWER pretvara sva velika slova u str1 u mala slova. To ne utječe na mala slova i druge znakove u nizu. Funkcija UPPER pretvara sva mala slova u nizu str u velika slova.

DECLARE @str nvarchar(30) = "Sinkronizacija"; -- Vraća "SYNCHRONIZATION" SELECT UPPER(@str) -- Vraća "synch" SELECT LOWER(@str)

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

Funkcija LTRIM uklanja vodeće razmake u nizu str, RTRIM odnosno uklanja razmake na kraju niza.

QUOTENAME QUOTENAME(niz_znakova)

Vraća Unicode niz s dodanim graničnicima za pretvaranje ulaznog niza u važeći razgraničeni identifikator.

DECLARE @str nvarchar(30) = "Sinkronizacija"; -- Vrati "[Sync]" SELECT QUOTENAME(@str)

PATINDEX PATINDEX (%p%, izraz)

Vraća početnu poziciju prvog pojavljivanja uzorka p u zadanom izrazu ili nulu ako uzorak nije pronađen.

Vraća 4 SELECT PATINDEX("%chro%", "Sinkronizacija")

ZAMIJENITI ZAMIJENI (str1, str2, str3)

Zamjenjuje sva pojavljivanja podniza str2 u nizu str1 s podnizom str3.

Vraća "Desinkronizacija" SELECT REPLACE("Sinkronizacija", "Sinkronizacija", "Desinkronizacija")

PONOVITI REPLIKACIJA (str, i)

Ponavlja niz str i puta.

Vraća "aBaBaBaBaB" SELECT REPLICATE("aB", 5)

OBRNUTI OBRNUTO (str)

Ispisuje niz str obrnutim redoslijedom.

Vraća "yaitsazinorkhniS" SELECT REVERSE("Sinkronizacija")

SOUNDEX SOUNDEX (str)

Vraća soundex kod od četiri znaka koji se koristi za određivanje jesu li dva niza slična. Radi samo za ASCII znakove.

PROSTOR RAZMAK (duljina)

Vraća niz razmaka duljine navedene u parametru duljine. Slično REPLICATE(" ", duljina).

ULICA STR (f[, dužina[, d]])

Pretvara navedeni izraz s pomičnim zarezom f u niz, gdje je len duljina niza, uključujući decimalnu točku, znak, znamenke i razmake (zadano je 10), a d je broj decimalnih mjesta za vraćanje.

Vraća "3.14" SELECT STR (3.1415, 4, 2)

STVARI STVARI (str1, a, duljina, str2)

Uklanja znakove duljine iz niza str1, počevši od pozicije a, i umeće niz str2 na njihovo mjesto.

Napomena u knjizi SELECT STUFF("Bilježnica", 5, 0," in a ") -- Priručnik SELECT STUFF("Bilježnica", 1, 4, "Ruka")

PODNIZ PODNIZ (str1, a, duljina)

Ekstrahira iz niza str, počevši od pozicije a, podniz dužine length.

Funkcije sustava

Funkcije Transact-SQL sustava pružaju opsežne informacije o objektima baze podataka. Većina funkcija sustava koristi interni numerički identifikator (ID) koji se dodjeljuje svakom objektu baze podataka kada se kreira. Pomoću ovog identifikatora sustav može jedinstveno identificirati svaki objekt baze podataka.

Sljedeća tablica navodi neke od najvažnijih funkcija sustava zajedno s njihovim Kratak opis:

Funkcije sustava Transact-SQL
Funkcija Sintaksa Opis Primjer upotrebe
CAST CAST (w AS vrsta [(duljina)]

Pretvara izraz w u navedeni tip tip podataka (ako je moguće). Argument w može biti bilo koji valjani izraz.

Vraća 3 SELECT CAST (3.1258 AS INT)

SPAJATI SE SPOJI (a1, a2)

Vraća prvu vrijednost izraza s popisa izraza a1, a2, ... koja nije null.

COL_LENGTH COL_LENGTH (obj, col)

Vraća duljinu stupca stupca objekta baze podataka (tablice ili pogleda) obj.

Vraća 4 SELECT COL_LENGTH("Zaposlenik", "Id")

PRETVORITI PRETVORI (tip[(duljina)], w)

Ekvivalent funkciji CAST, ali su argumenti drugačije navedeni. Može se koristiti s bilo kojom vrstom podataka.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Vraća trenutni datum i vrijeme.

TRENUTNI KORISNIK TRENUTNI KORISNIK

Vraća ime trenutnog korisnika.

DULJINA PODATAKA DATALENGTH(z)

Vraća broj bajtova koje zauzima izraz z.

Ovaj upit vraća duljinu svakog polja SELECT DATALENGTH(FirstName) FROM Employee

GETANSINULL GETANSINULL("dbname")

Vraća 1 ako je korištenje null vrijednosti u dbname baze podataka u skladu sa standardom ANSI SQL.

NIJE NULL ISNULL (izraz, vrijednost)

Vraća vrijednost izraza ako nije NULL; inače se vraća vrijednost.

ISNUMERIC ISNUMERIČKI (izraz)

Određuje je li izraz expr valjani numerički tip.

NOVO NOVO()

Stvara ID jedinstvenog identifikacijskog broja koji se sastoji od 16-bajtnog binarnog niza dizajniranog za pohranjivanje vrijednosti tipa podataka UNIQUEIDENTIFIER.

NEWSEQUENTIALID NEWSEQUENTIALID()

Stvara GUID koji je veći od bilo kojeg drugog GUID-a prethodno stvorenog ovom funkcijom na navedenom računalu. (Ova se funkcija može koristiti samo kao zadana vrijednost za stupac.)

NULLIF NULLIF (izraz1, izraz2)

Vraća null ako izrazi expr1 i expr2 imaju iste vrijednosti.

Upit vraća NULL za projekt -- čiji je broj = "p1" SELECT NULLIF(Number, "p1") FROM Project

SVOJSTVO POSLUŽITELJA SERVERPROPERTY (naziv svojstva)

Vraća informacije o svojstvima poslužitelja baze podataka.

SYSTEM_USER SYSTEM_USER

Vraća ID trenutnog korisnika.

USER_ID USER_ID()

Vraća korisnički ID korisničko ime. Ako nije naveden nijedan korisnik, vraća se ID trenutnog korisnika.

KORISNIČKO IME KORISNIČKO IME()

Vraća korisničko ime s navedenim ID-om. Ako identifikator nije naveden, vraća se ime trenutnog korisnika.

Funkcije metapodataka

U osnovi, funkcije metapodataka vraćaju informacije o određenoj bazi podataka i objektima baze podataka. Tablica u nastavku sažima neke od najvažnijih funkcija metapodataka zajedno s njihovim kratkim opisima:

Transact-SQL funkcije metapodataka
Funkcija Sintaksa Opis Primjer upotrebe
COL_NAME COL_NAME (tab_id, col_id)

Vraća naziv stupca s navedenim identifikatorom col_id tablice s identifikatorom tab_id.

Vraća naziv stupca "Prezime" SELECT COL_NAME (OBJECT_ID("Zaposlenik"), 3)

SVOJSTVO STUPCA COLUMNPROPERTY (id, stupac, svojstvo)

Vraća informacije o navedenom stupcu.

Vraća vrijednost svojstva PRECISION -- za stupac Id tablice Employee SELECT COLUMNPROPERTY (OBJECT_ID("Employee"), "Id", "precision")

DATABASEPROPERTY DATABASEPROPERTY (baza podataka, svojstvo)

Vraća vrijednost svojstva svojstva baze podataka.

Vraća vrijednost svojstva IsNullConcat -- za SampleDb bazu podataka SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID DB_ID()

Vraća ID baze podataka db_name. Ako naziv baze podataka nije naveden, vraća se ID trenutne baze podataka.

DB_NAME DB_NAME()

Vraća naziv baze podataka koja ima db_id. Ako identifikator nije naveden, vraća se naziv trenutne baze podataka.

INDEX_COL INDEX_COL (tablica, i, ne)

Vraća naziv indeksiranog stupca tablice tablice. Stupac je označen identifikatorom indeksa i i pozicijom stupca br u tom indeksu.

INDEXPROPERTY INDEXPROPERTY (obj_id, index_name, property)

Vraća svojstva imenovanog indeksa ili statistike za navedeni ID broj tablice, naziv indeksa ili statistike i naziv svojstva.

OBJECT_NAME OBJECT_NAME (obj_id)

Vraća naziv objekta baze podataka koji ima identifikator obj_id.

SELECT OBJECT_NAME(245575913);

OBJECT_ID OBJECT_ID (obj_name)

Vraća identifikator objekta obj_name baze podataka.

Vraća 245575913 - ID tablice zaposlenika SELECT OBJECT_ID("Zaposlenik")

SVOJSTVO OBJEKTA OBJECTPROPERTY (obj_id, svojstvo)

Vraća informacije o objektima iz trenutne baze podataka.

Dobivanje trenutnog datuma i vremena

Da biste dobili trenutni datum (bez vremena) u formatu GGGG-MM-DD, možete koristiti funkcije:

  • CURDATE()
  • TRENUTNI DATUM()

Za dobivanje trenutnog vremena (bez datuma) u HH:MM:SS formatu, možete koristiti funkcije:

  • CURTIME()
  • TRENUTNO VRIJEME()

Da biste dobili trenutni datum i vrijeme u formatu GGGG-MM-DD HH:MM:SS, možete koristiti bilo koju od sljedećih funkcija:

  • SADA()
  • SYSDATE()
  • CURRENT_TIMESTAMP

Primjer 1

SELECT CURDATE(); ili SELECT CURRENT_DATE();

Rezultat: 2016-08-28

SELECT CURTIME(); ili SELECT CURENT_TIME();

Rezultat: 19:29:54

ODABERI SADA(); ili SELECT SYSDATE(); ili SELECT CURRENT_TIMESTAMP;

Rezultat: 2016-08-28 19:29:54

Zbrajanje i oduzimanje vremenskog intervala

S datumima i vremenima često morate izvoditi aritmetičke operacije: dodati ili oduzeti određeni vremenski interval određenom datumu. Dodavanje vremenskog intervala može se izvršiti na tri načina:

  • Funkcija DATE_ADD(izvorni_datum, tip izraza INTERVAL);
  • Funkcija ADDDATE(izvorni_datum, tip izraza INTERVAL);
  • Izraz: izvorni_datum + INTERVAL tip izraza.

Oduzimanje vremenskog intervala također se može učiniti na tri načina:

  • Funkcija DATE_SUB(izvorni_datum, INTERVAL tip izraza);
  • Funkcija SUBDATE(izvorni_datum, INTERVAL tip izraza);
  • Izraz: izvorni_datum - tip izraza INTERVAL.

Izvor_datum je datum kojem se dodaje ili oduzima određeni vremenski interval. Izraz– ovo je sam dodani ili oduzeti vremenski interval, naveden u tekstualnom formatu. Tip– argument koji označava vrstu intervala koji se dodaje. Ova opcija određuje kako ispravno protumačiti izraz. Na primjer, izraz '3:24' može se protumačiti kao 3 sata 24 minute ili 3 minute 24 sekunde. Ako je naveden tip "MINUTE_SECOND", tada će tumačenje biti nedvosmisleno. Odnos između izraza i argumenata tipa prikazan je u tablici:

Primjer 2

Sljedeće tri naredbe rade istu operaciju. Dodaju sekundu zadanom vremenu.

ODABERITE "2016-09-10 23:59:59" + Interval 1 SEKUNDA;

SELECT ADDDATE("2016-09-10 23:59:59", Interval 1 SEKUNDA);

SELECT DATE_ADD("2016-09-10 23:59:59", Interval 1 SEKUNDA);

Rezultat sve tri ekipe je isti: 2016-09-11 00:00:00.

Primjer 3

Sljedeće tri naredbe izračunavaju datum koji je točno godinu i pol prije danog:

SELECT DATE_SUB("2016-09-10 23:59:59", Interval "1-6" YEAR_MONTH);

SELECT SUBDATE("2016-09-10 23:59:59", Interval "1-6" YEAR_MONTH);

SELECT "2016-09-10 23:59:59" - Interval "1-6" YEAR_MONTH;

Rezultat sve tri ekipe je isti: 2015-03-10 23:59:59.

Funkcije pretvorbe u druge jedinice

Ponekad je zgodno raditi s datumom predstavljenim kao broj dana koji su prošli od godine 0. Za pretvorbu datuma u ovaj format i natrag u MySQL, postoje dvije funkcije:

  • Današnji datum) – vraća broj dana koji odgovara argumentu datuma.
  • FROM_DAYS(broj_dana)– vraća datum prema broju dana.


reci prijateljima
Pročitajte također