Sql päivä päivämäärästä. SQL päivämäärä- ja aikafunktiot. Erilaisten päivämäärä- ja aikamuotojen ja muiden tietojen hakeminen

SQL työskentelee päivämäärien kanssa– on niin tärkeä, että et voi tulla toimeen ilman sql-perusoperaattoreiden tuntemusta missään arvokkaassa projektissa. Sanotaanpa mitä tahansa, kaikissa palveluissa on työskenneltävä ajan kanssa. Yleensä tämä on ajanjaksojen laskentaa päivämäärästä toiseen, esimerkiksi näyttämällä luettelo rekisteröityneistä käyttäjistä vuodelle, kuukaudelle, päivälle, tunnille.

Haluan antaa joukon ratkaisuja yleisiin tehtäviin, jotka liittyvät päivämäärien käsittelyyn SQL:ssä ja joihin itse törmäsin päivittäin, toivottavasti tästä on sinulle merkitystä ja hyötyä.

Kuinka saada nykyinen päivämäärä SQL:ssä
WHERE päivämäärä = CURDATE()
tai toinen vaihtoehto
WHERE päivämäärä = STR_TO_DATE(nyt(), "%Y-%m-%d")

Lisää yksi tunti päivämäärään SQL:ssä
DATE_ADD("2013-03-30", VÄLI 1 TUNTI)

Lisää yksi päivä päivämäärään SQL:ssä
DATE_ADD("2013-03-30", VÄLI 1 PÄIVÄ)
Vastaavasti voit lisätä nykyiseen päivämäärään minkä tahansa määrän päiviä.

Lisää kuukausi päivämäärään SQL:ssä
DATE_ADD("2013-03-30", INTERVAL 1 KUUKAUSI)
Vastaavasti voit lisätä nykyiseen päivämäärään kuinka monta kuukautta tahansa.

Hae eilinen päivä SQL:ssä
PÄIVÄMÄÄRÄ_LISÄÄ(CURDATE(), VÄLI -1 PÄIVÄ)
tai
DATE_SUB(CURDATE(), VÄLI 1 PÄIVÄ)

Hae kuluvan viikon aloituspäivämäärä SQL:ssä
Tämä on yksi vaikeimmista tehtävistä ensi silmäyksellä, mutta se voidaan ratkaista hyvin yksinkertaisesti
KURDATE()-VIIKKOPÄIVÄ(KURDATE());

Hanki valikoima tältä maanantailta nykyiseen viikonpäivään SQL:ssä

Hanki valinta nykyisen kuukauden ensimmäisestä päivästä nykyiseen viikonpäivään SQL:ssä
WHERE (päivämäärä BETWEEN (CURDATE()-WEEKDAY(CURDATE())) AND CURDATE())

Kuinka saada käyttäjän syntymäaika SQL:ssä
VALITSE nimi, syntymä, CURRENT_DATE, (YEAR(CURRENT_DATE) - YEAR(syntymä)) - (OIKEALLE(CURRENT_DATE,5)

Etsi SQL:stä kaikki käyttäjät, joiden syntymäpäivä on ensi kuussa
SELECT nimi, syntymä KOHTA käyttäjältä WHERE KUUKAUSI(syntymä) = KUUKAUSI(PÄIVÄMÄÄRÄ_LISÄÄ(NYT(), VÄLI 1 KUUKAUSI));
tai toinen vaihtoehto
SELECT nimi, syntymä FROM lemmikki KHERE KUUKAUSI(syntymä) = MOD(KUUKAUSI(NYT()), 12) + 1;

Yllä olevien tapausten lisäksi, jotka koskevat päivämäärien käyttöä SQL:ssä, suosittelen, että luet seuraavien operaattoreiden dokumentaatiot:
NYT()– Palauttaa nykyisen päivämäärän ja kellonajan.
CURDATE()– Palauttaa nykyisen päivämäärän.
KURTIME()– Palaamme nykyisen ajan.
PÄIVÄMÄÄRÄ()– Koostuu kahdesta osasta päivämäärä ja kellonaika.
OTTAA TALTEEN()– Palauttaa yhden päivämäärän/ajan arvon.
DATE_ADD()– Lisää määritetyn määrän päiviä/minuutteja/tunteja jne. näytteeseen.
DATE_SUB()– Vähennä määritetty aikaväli päivämäärästä.
DATEDIFF()– Palauttaa kahden päivämäärän välisen ajan.
PÄIVÄMÄÄRÄMUOTO()– Toiminto eri aikatietojen ulostulolle.

Päivämäärien käyttäminen SQL:ssä, kuten käy ilmi, ei ole niin vaikeaa, ja nyt sen sijaan, että lasket jaksoja PHP:n avulla, voit tehdä tämän SQL-kyselyn suoritusvaiheessa ja saada tarvittavat tiedot.

Transact-SQL-kielen funktiot voivat olla aggregoituja tai skalaarisia. Tämäntyyppisiä toimintoja käsitellään tässä artikkelissa.

Aggregaattifunktiot

Kokoonpanofunktiot suorittavat laskelmia sarakearvojen ryhmästä ja palauttavat aina yhden arvon näiden laskelmien tuloksena. Transact-SQL tukee useita yleisiä aggregaattitoimintoja:

AVG

Laskee sarakkeen sisältämien tietojen aritmeettisen keskiarvon. Arvojen, joille laskenta suoritetaan, on oltava numeerisia.

MIN ja MAX

Määrittää kaikkien sarakkeen sisältämien tietoarvojen enimmäis- ja vähimmäisarvot. Arvot voivat olla numeerisia, merkkijonoja tai ajallisia (päivämäärä/aika).

SUMMA

Laskee sarakkeen arvojen kokonaissumman. Arvojen, joille laskenta suoritetaan, on oltava numeerisia.

KREIVI

Laskee ei-nolla-arvojen määrän sarakkeessa. Count(*)-funktio on ainoa koontifunktio, joka ei suorita laskutoimituksia sarakkeille. Tämä funktio palauttaa rivien määrän (riippumatta siitä, sisältävätkö yksittäiset sarakkeet nolla-arvoja).

COUNT_BIG

Samanlainen kuin laskentafunktio, sillä erolla, että se palauttaa BIGINT-tietoarvon.

Säännöllisten aggregaattifunktioiden käyttöä SELECT-lauseessa käsitellään seuraavassa artikkelissa.

Skalaarifunktiot

Transact-SQL:n skalaarifunktioita käytetään skalaarilausekkeiden luomiseen. (Skalaarifunktio suorittaa laskelmia yhdelle arvolle tai arvoluettelolle, kun taas koontifunktio suorittaa laskutoimituksia arvoryhmälle useilla riveillä.) Skalaarifunktiot voidaan jakaa seuraaviin luokkiin:

    numeeriset toiminnot;

    päivämäärä toiminnot;

    merkkijono toiminnot;

    järjestelmän toiminnot;

    metatietotoiminnot.

Tämän tyyppisiä toimintoja käsitellään seuraavissa osissa.

Numeeriset funktiot

Transact-SQL:n numeeriset funktiot ovat matemaattisia funktioita numeeristen arvojen muokkaamiseen. Luettelo numeerisista funktioista ja niiden lyhyet kuvaukset ovat alla olevassa taulukossa:

Transact-SQL:n numeeriset funktiot
Toiminto Syntaksi Kuvaus Käyttöesimerkki
ABS ABS(n)

Palauttaa numeerisen lausekkeen n itseisarvon (eli negatiiviset arvot palautetaan positiivisina).

SELECT ABS(-5.320) -- palautus 5.320 SELECT ABS(8.90) -- palautus 8.90

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

Käänteiset trigonometriset funktiot, jotka laskevat arvon n arkosinin, arcsinin, arktangentin (ATN2:lle lasketaan arktosiini n/m). Syöttöarvot n, m ja tulos ovat FLOAT-tietotyyppiä.

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

Trigonometriset funktiot, jotka laskevat arvon n kosinin, sinin, tangentin ja kotangentin. Tuloksen tietotyyppi on FLOAT.

ASTEET, RADIAANIT ASTEET(n), RADIAANIT(n)

DEGREES-funktio muuntaa radiaanit asteina, RADIANS, vastaavasti, päinvastoin.

SELECT DEGREES(PI() / 4) -- Palauttaa 45 SELECT COS(RADIANS(60.0)) -- Palauttaa 0.5

KATTO KATTO(n)

Pyöristää luvun suurempaan kokonaislukuarvoon.

SELECT CEILING(-5.320) -- Palautukset -5 SELECT CEILING(8.90) -- Palautukset 9

PYÖRISTÄÄ ROUND(n, p, [t])

Pyöristää n:n arvon lähimpään p:ään. Kun p on positiivinen luku, n:n murto-osa pyöristetään, ja kun se on negatiivinen, kokonaislukuosa pyöristetään. Käytettäessä valinnaista argumenttia t, lukua n ei pyöristetä, vaan se katkaistaan ​​(eli pyöristetään alaspäin).

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

LATTIA FLOOR(n)

Pyöristää alas pienimpään kokonaislukuarvoon.

SELECT FLOOR(5.88) -- Palauttaa 5

EXP EXP(n)

Laskee e n:n arvon.

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

LOG(n) - laskee luvun n luonnollisen logaritmin (eli kantaluvun e), LOG10(n) - laskee luvun n desimaalilogaritmin (kanta 10).

P.I. PI()

Palauttaa π:n arvon (3,1415).

POWER TEHO(x, y)

Laskee x y:n arvon.

RAND RAND()

Palauttaa mielivaltaisen luvun FLOAT-tyyppiä arvoalueella 0 ja 1 välillä.

ROWCOUNT_BIG ROWCOUNT_BIG()

Palauttaa taulukon rivien määrän, jotka on käsitelty viimeisellä järjestelmän suorittamalla Transact-SQL-käskyllä. Palautusarvo on tyyppiä BIGINT.

MERKKI MERKINNÄ(n)

Palauttaa n:n etumerkin numerona: +1 jos positiivinen, -1 jos negatiivinen.

SQRT, NELIÖ SQRT(n), NELIÖ(n)

SQRT(n) - laskee luvun n neliöjuuren, NELIÖ(n) - palauttaa argumentin n neliön.

Päivämäärätoiminnot

Päivämääräfunktiot arvioivat lausekkeen vastaavat päivämäärä- tai aikaosat tai palauttavat aikavälin arvon. Transact-SQL:n tukemat päivämääräfunktiot ja niiden lyhyet kuvaukset on esitetty alla olevassa taulukossa:

Transact-SQL-päivämääräfunktiot
Toiminto Syntaksi Kuvaus Käyttöesimerkki
GETDATE GETDATE()

Palauttaa nykyisen järjestelmän päivämäärän ja kellonajan.

SELECT GETDATE()

DATEPART DATEPART (tuote, päivämäärä)

Palauttaa alkioparametrissa määritetyn päivämääräosan kokonaislukuna.

Palautus 1 (tammikuu) SELECT DATEPART(kuukausi, "01/01/2012") -- Palauttaa 4 (keskiviikko) SELECT DATEPART(arkipäivä, "01/02/2012")

DATENAME DATENAME (tuote, päivämäärä)

Palauttaa alkioparametrissa määritetyn päivämääräosan merkkijonona.

Palauttaa tammikuun SELECT DATENAME(kuukausi, "01/01/2012") -- palauttaa keskiviikon SELECT DATENAME(arkipäivä, "01/02/2012")

DATEDIFF DATEDIFF (tuote, dat1, dat2)

Laskee kahden päivämääräosan dat1 ja dat2 välisen eron ja palauttaa kokonaislukutuloksen alkioargumentissa määritetyissä yksiköissä.

Palauttaa 19 (19 vuoden aikaväli päivämäärien välillä) SELECT DATEDIFF(vuosi, "01/01/1990", "01/01/2010") -- Palauttaa 7305 (7305 päivän väli päivämäärien välillä) SELECT DATEDIFF(päivä, "01/01" /1990", "01/01" .2010")

PÄIVÄMÄÄRÄ DATEADD (tuote, n, päivämäärä)

Lisää kohdeargumentissa määritetyn n:nnen yksiköiden määrän määritettyyn päivämäärään. (n voi olla myös negatiivinen.)

Lisää 3 päivää nykyiseen päivämäärään SELECT DATEADD(päivä, 3, GETDATE())

Merkkijonofunktiot

Merkkijonofunktiot käsittelevät sarakearvoja, jotka ovat tyypillisesti merkkitietotyyppejä. Transact-SQL:n tuetut merkkijonofunktiot ja niiden lyhyet kuvaukset on esitetty alla olevassa taulukossa:

Transact-SQL-merkkijonofunktiot
Toiminto Syntaksi Kuvaus Käyttöesimerkki
ASCII, UNICODE ASCII(merkki), UNIKOODI(merkki)

Muuntaa määritetyn merkin vastaavaksi ASCII-koodin kokonaisluvuksi.

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

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

Muuntaa ASCII-koodin (tai Unicoden, jos NCHAR) sopivaksi merkiksi.

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

CHARINDEX CHARINDEX (str1, str2)

Palauttaa alimerkkijonon str1 esiintymisen aloituskohdan merkkijonossa str2. Jos merkkijono str2 ei sisällä osamerkkijonoa str1, palautetaan arvo 0

Palauttaa 5 SELECT CHARINDEX ("morf", "polymorfismi")

ERO EROTUS (str1, str2)

Palauttaa kokonaisluvun välillä 0 ja 4, joka on ero kahden merkkijonon str1 ja str2 SOUNDEX-arvojen välillä. SOUNDEX-menetelmä palauttaa luvun, joka kuvaa merkkijonon ääntä. Tällä menetelmällä voit tunnistaa samankaltaisia ​​kuuloisia merkkijonoja. Toimii vain ASCII-merkeille.

Palauttaa 2 SELECT DIFFERENCE ("oikeinkirjoitus", "kerroin")

VASEN OIKEA LEFT (str, pituus), RIGHT (str, pituus)

Palauttaa pituusparametrilla LEFT määritetyn merkkijonon str ensimmäisten merkkien määrän ja OIKEA-funktiolle merkkijonon str viimeisten merkkien määrän.

DECLARE @str nvarchar(30) = "Synkronointi"; -- Palauttaa "Sync" SELECT LEFT(@str, 4) -- palauttaa "Zation" SELECT RIGHT(@str, 5)

LEN PITKÄ(str)

Palauttaa argumentissa määritetyn merkkijonon str merkkien määrän (ei tavujen määrää), mukaan lukien välilyönnit.

ALA, YLÄ ALA(str), UPPER(str)

LOWER-funktio muuntaa kaikki str1:n isot kirjaimet pieniksi. Tämä ei vaikuta pieniin kirjaimiin ja muihin merkkijonoon. UPPER-funktio muuntaa kaikki merkkijonon str pienet kirjaimet isoiksi.

DECLARE @str nvarchar(30) = "Synkronointi"; -- Palauttaa "SYNCHRONIZATION" SELECT UPPER(@str) -- Palauttaa "synch" SELECT LOWER(@str)

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

LTRIM-toiminto poistaa välilyönnit merkkijonosta str, RTRIM vastaavasti poistaa välilyönnit merkkijonon lopusta.

QUOTENAME QUOTENAME(merkkijono)

Palauttaa Unicode-merkkijonon, johon on lisätty erottimet syötteen muuntamiseksi kelvolliseksi erotetuksi tunnisteeksi.

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

PATINDEX PATINDEKSI (%p%, expr)

Palauttaa kuvion p ensimmäisen esiintymän aloituskohdan annetussa lausekkeessa tai nollan, jos kuviota ei löydy.

Palauttaa 4 SELECT PATINDEX("%chro%", "Synchronization")

KORVATA KORVAA (str1, str2, str3)

Korvaa kaikki osamerkkijonon str2 esiintymät merkkijonossa str1 alimerkkijonolla str3.

Palauttaa "Desynchronization" SELECT REPLACE("Synkronointi", "Synkronointi", "Desynkronointi")

TOISTAA TOISTAA (str, i)

Toistaa merkkijonon str i kertaa.

Palauttaa "aBaBaBaBaB" SELECT REPLICATE("aB", 5)

KÄÄNTEINEN KÄÄNTEINEN (str)

Tulostaa merkkijonon käänteisessä järjestyksessä.

Palauttaa "yaitsazinorkhniS" SELECT REVERSE("Synkronointi")

ÄÄNI SOUNDEX (str)

Palauttaa nelimerkkisen soundex-koodin, jota käytetään määrittämään, ovatko kaksi merkkijonoa samanlaisia. Toimii vain ASCII-merkeille.

TILA Space (pituus)

Palauttaa välilyöntejä, joiden pituus on määritetty pituusparametrissa. Samanlainen kuin REPLICATE(" ", pituus).

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

Muuntaa määritetyn liukulukulausekkeen f merkkijonoksi, jossa len on merkkijonon pituus, mukaan lukien desimaalipiste, etumerkki, numerot ja välilyönnit (oletusarvo 10), ja d on palautettavien desimaalien määrä.

Palauttaa "3.14" SELECT STR (3.1415, 4, 2)

TAVARAT TAVARAT (str1, a, pituus, str2)

Poistaa pituusmerkit merkkijonosta str1 alkaen kohdasta a ja lisää merkkijonon str2 niiden tilalle.

Kirjassa oleva huomautus SELECT STUFF("Muistikirja", 5, 0," in a) -- Käsikirja SELECT STUFF("Muistikirja", 1, 4, "Käsi")

SUBSTRING SUBSTRING (str1, a, pituus)

Poimii merkkijonosta str, alkaen kohdasta a, pituuspituisen alijonon.

Järjestelmän toiminnot

Transact-SQL-järjestelmätoiminnot tarjoavat kattavaa tietoa tietokantaobjekteista. Useimmat järjestelmätoiminnot käyttävät sisäistä numeerista tunnistetta (ID), joka määritetään kullekin tietokantaobjektille, kun se luodaan. Tämän tunnisteen avulla järjestelmä voi yksilöidä jokaisen tietokantaobjektin.

Seuraavassa taulukossa on lueteltu joitakin tärkeimmistä järjestelmän toiminnoista sekä niiden lyhyt kuvaus:

Transact-SQL-järjestelmätoiminnot
Toiminto Syntaksi Kuvaus Käyttöesimerkki
HEITTÄÄ CAST (w AS-tyyppi [(pituus)]

Muuntaa lausekkeen w määritetyksi tietotyypiksi (jos mahdollista). Argumentti w voi olla mikä tahansa kelvollinen lauseke.

Palauttaa 3 SELECT CAST (3,1258 AS INT)

COALESCE COALESCE (a1, a2)

Palauttaa ensimmäisen lausekkeen arvon lausekkeiden a1, a2, ... luettelosta, joka ei ole nolla.

COL_LENGTH COL_LENGTH (obj, col)

Palauttaa tietokantaobjektin (taulukko tai näkymä) objektin sarakkeen pituuden.

Palauttaa 4 SELECT COL_LENGTH("Työntekijä", "Id")

MUUNTAA MUUNNA (tyyppi[(pituus)], w)

Vastaa CAST-funktiota, mutta argumentit on määritetty eri tavalla. Voidaan käyttää minkä tahansa tietotyypin kanssa.

CURRENT_TIMESTAMP CURRENT_TIMESTAMP

Palauttaa nykyisen päivämäärän ja kellonajan.

NYKYINEN KÄYTTÄJÄ NYKYINEN KÄYTTÄJÄ

Palauttaa nykyisen käyttäjän nimen.

TIETOJEN PITUUS DATALENGTH(z)

Palauttaa lausekkeen z käyttämien tavujen määrän.

Tämä kysely palauttaa kunkin kentän pituuden SELECT DATALENGTH(FirstName) FROM Employee

GETANSINULL GETANSINULL("dbname")

Palauttaa 1, jos nolla-arvojen käyttö tietokannassa dbname on ANSI SQL -standardin mukainen.

ISNULL ISNULL (lause, arvo)

Palauttaa arvon expr, jos se ei ole NULL; muussa tapauksessa arvo palautetaan.

ISNUMERIC ISNUMERIC (laus.)

Määrittää, onko lauseke expr kelvollinen numeerinen tyyppi.

UUSI UUSIID()

Luo yksilöllisen tunnistenumeron tunnuksen, joka koostuu 16-tavuisesta binäärimerkkijonosta, joka on suunniteltu tallentamaan UNIQUEIDENTIFIER-tietotyypin arvoja.

NEWSEQUENTIALID NEWSEQUENTIALID()

Luo GUID:n, joka on suurempi kuin mikään muu tällä toiminnolla aiemmin luotu GUID määritetylle tietokoneelle. (Tätä funktiota voidaan käyttää vain sarakkeen oletusarvona.)

NULLIF NULLIF (laus1, laus2)

Palauttaa nollan, jos lausekkeilla laus1 ja laus2 on samat arvot.

Kysely palauttaa NULL-arvon projektille, jonka numero = "p1" SELECT NULLIF(Numero, "p1") Projektista

PALVELINOMAISUUS SERVERPROPERTY (omaisuuden nimi)

Palauttaa tietokantapalvelimen ominaisuuksien tiedot.

SYSTEM_USER SYSTEM_USER

Palauttaa nykyisen käyttäjän tunnuksen.

KÄYTTÄJÄTUNNUS KÄYTTÄJÄTUNNUS()

Palauttaa käyttäjätunnuksen käyttäjänimen. Jos käyttäjää ei ole määritetty, palautetaan nykyinen käyttäjätunnus.

USER_NAME USER_NAME()

Palauttaa käyttäjänimen määritetyllä tunnuksella. Jos tunnistetta ei ole määritetty, palautetaan nykyisen käyttäjän nimi.

Metadatatoiminnot

Periaatteessa metatietofunktiot palauttavat tietoja tietystä tietokannasta ja tietokantaobjekteista. Alla olevassa taulukossa on yhteenveto joistakin tärkeimmistä metatietotoiminnoista ja niiden lyhyet kuvaukset:

Transact-SQL-metatietofunktiot
Toiminto Syntaksi Kuvaus Käyttöesimerkki
COL_NAME COL_NAME (tab_id, col_id)

Palauttaa sarakkeen nimen määritetyllä tunnisteella col_id taulukosta, jonka tunniste on tab_id.

Palauttaa sarakkeen "LastName" nimen SELECT COL_NAME (OBJECT_ID("Työntekijä"), 3)

SARAKEKIINTEISTÖ SARAKE-OMAISUUS (tunnus, sarake, ominaisuus)

Palauttaa tiedot määritetystä sarakkeesta.

Palauttaa PRECISION-ominaisuuden arvon Työntekijä-taulukon Id-sarakkeelle SELECT COLUMNPROPERTY (OBJECT_ID("Työntekijä"), "Id", "tarkkuus")

TIETOKANNAN OMAISUUS TIETOKAnnan OMAISUUS (tietokanta, omaisuus)

Palauttaa tietokannan ominaisuuden arvon.

Palauttaa IsNullConcat-ominaisuuden arvon SampleDb-tietokannassa SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat")

DB_ID DB_ID()

Palauttaa tietokannan tunnuksen db_name. Jos tietokannan nimeä ei ole määritetty, palautetaan nykyisen tietokannan tunnus.

DB_NAME DB_NAME()

Palauttaa tietokannan nimen, jolla on db_id. Jos tunnistetta ei ole määritetty, palautetaan nykyisen tietokannan nimi.

INDEX_COL INDEX_COL (taulukko, i, ei)

Palauttaa taulukkotaulukon indeksoidun sarakkeen nimen. Sarake osoitetaan indeksin tunnisteella i ja sarakkeen sijainnilla no kyseisessä indeksissä.

OMINAISUUDET INDEXPROPERTY (obj_id, index_name, property)

Palauttaa nimetyn indeksin tai tilaston ominaisuudet määritetylle taulukon tunnusnumerolle, indeksin tai tilaston nimen ja ominaisuuden nimen.

OBJECT_NAME OBJECT_NAME (obj_id)

Palauttaa tietokantaobjektin nimen, jolla on tunniste obj_id.

SELECT OBJECT_NAME(245575913);

OBJECT_ID OBJECT_ID (objektin_nimi)

Palauttaa tietokannan objektitunnisteen obj_nimi.

Palauttaa 245575913 - Työntekijätaulukon tunnus SELECT OBJECT_ID("Työntekijä")

OBJEKTIKIINTEISTÖ OBJEKTIOMAISUUS (obj_id, ominaisuus)

Palauttaa objekteja koskevat tiedot nykyisestä tietokannasta.

Viimeisin päivitys: 29.7.2017

T-SQL tarjoaa useita toimintoja päivämäärien ja kellonaikojen käsittelyyn:

    GETDATE: Palauttaa nykyisen paikallisen päivämäärän ja kellonajan järjestelmän kellon perusteella datetime-objektina

    VALITSE PÄIVÄMÄÄRÄ() -- 2017-07-28 21:34:55.830

    GETUTCDATE : Palauttaa nykyisen paikallisen päivämäärän ja ajan Greenwichin ajan (UTC/GMT) päivämäärä-aikaobjektina

    VALITSE PÄIVÄYS() -- 2017-07-28 18:34:55.830

    SYSDATETIME: Palauttaa nykyisen paikallisen päivämäärän ja kellonajan järjestelmän kellon perusteella, mutta eroaa GETDATE:stä siinä, että päivämäärä ja aika palautetaan datetime2-objektina

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

    SYSUTCDATETIME : Palauttaa nykyisen paikallisen päivämäärän ja ajan Greenwichin ajan (UTC/GMT) datetime2-objektina

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

    SYSDATETIMEOFFSET : palauttaa datetimeoffset(7) -objektin, joka sisältää päivämäärän ja kellonajan suhteessa GMT:hen

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

    PÄIVÄ : palauttaa parametrina välitetyn päivämäärän

    VALITSE PÄIVÄ(HAE PÄIVÄYS()) - 28

    MONTH : palauttaa päivämäärän kuukauden

    VALITSE KUUKAUSI(HAE PÄIVÄYS()) - 7

    YEAR : palauttaa vuoden päivämäärästä

    VALITSE VUOSI(HAKUPÄIVÄMÄÄRÄ()) -- 2017

    DATENAME: Palauttaa päivämääräosan merkkijonona. Päivämääräosan valintaparametri välitetään ensimmäisenä parametrina, ja itse päivämäärä välitetään toisena parametrina:

    VALITSE PÄIVÄMÄÄRÄ(kuukausi, GETDATE()) -- heinäkuu

    Määrittääksesi osan päivämäärästä voit käyttää seuraavia parametreja (niiden lyhennetyt versiot on merkitty suluissa):

    • vuosi (vv, vvvv): vuosi

      neljännes (qq, q) : neljännes

      kuukausi (mm, m) : kuukausi

      dayofyear (dy, y) : vuoden päivä

      päivä (dd, d) : kuukauden päivä

      viikko (wk, ww): viikko

      arkipäivä (dw) : viikonpäivä

      tunti (hh) : tunti

      minuutti (mi, n) : minuutti

      toinen (ss, s) : toinen

      millisekunti (ms) : millisekunti

      mikrosekunti (mcs) : mikrosekunti

      nanosekunti (ns) : nanosekunti

      tzoffset (tz): siirtymä minuutteina suhteessa GMT:hen (datetimeoffset-objektille)

    DATEPART: Palauttaa päivämääräosan numerona. Päivämääräosan valintaparametri välitetään ensimmäisenä parametrina (käyttäen samoja parametreja kuin DATENAME) ja itse päivämäärä välitetään toisena parametrina:

    VALITSE PÄIVÄMÄÄRÄOSA(kuukausi, HYVÄKSY()) - 7

    DATEADD: Palauttaa päivämäärän, joka on seurausta numeron lisäämisestä tiettyyn päivämääräkomponenttiin. Ensimmäinen parametri edustaa edellä kuvattua päivämääräkomponenttia DATENAME-funktiolle. Toinen parametri on lisättävä määrä. Kolmas parametri on itse päivämäärä, johon sinun on lisättävä:

    VALITSE PÄIVÄMÄÄRÄ(kuukausi, 2, "2017-7-28") -- 2017-09-28 00:00:00.000 VALITSE PÄIVÄMÄÄRÄ(päivä, 5, "2017-7-28") -- 2017-08-02 00 :00:00.000 VALITSE PÄIVÄMÄÄRÄ(päivä, -5, "2017-7-28") -- 2017-07-23 00:00:00.000

    Jos lisätty määrä edustaa negatiivista lukua, päivämäärää itse asiassa pienennetään.

    DATEDIFF: Palauttaa kahden päivämäärän välisen eron. Ensimmäinen parametri on päivämääräkomponentti, joka ilmaisee, millä yksiköillä ero tulee mitata. Toinen ja kolmas parametri ovat verrattavat päivämäärät:

    SELECT DATEDIFF(vuosi, "2017-7-28", "2018-9-28") -- ero 1 vuosi SELECT DATEDIFF(kuukausi, "2017-7-28", "2018-9-28") -- ero 14 kuukautta SELECT DATEDIFF(päivä, "2017-7-28", "2018-9-28") -- ero 427 päivää

    TODATETIMEOFFSET : Palauttaa datetimeoffset-arvon, joka on seurausta aikasiirron lisäämisestä toiseen datetimeoffset-objektiin

    SELECT TODATETIMEOFFSET("2017-7-28 01:10:22", "+03:00")

    SWITCHOFFSET: Palauttaa datetimeoffset-arvon, joka on seurausta aikasiirron lisäämisestä datetime2-objektiin

    SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(), "+02:30")

    EOMONTH : Palauttaa sen kuukauden viimeisen päivän päivämäärän, jota käytetään parametrina välitetyssä päivämäärässä.

    VALITSE EOKUUKAUSI("2017-02-05") -- 2017-02-28 VALITSE EOKUUKAUSI("2017-02-05", 3) -- 2017-05-31

    Valinnaisena toisena parametrina voit siirtää päivämäärään lisättävien kuukausien määrän. Uudelle päivämäärälle lasketaan sitten kuukauden viimeinen päivä.

    DATEFROMPARTS: vuoden, kuukauden ja päivän mukaan luo päivämäärän

    VALITSE PÄIVÄMÄÄRÄ OSISTA (2017, 7, 28) -- 28.7.2017

    ISDATE: Testaa, onko lauseke päivämäärä. Jos on, se palauttaa 1, muussa tapauksessa se palauttaa 0.

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

Esimerkki funktioiden käytöstä on tilaustaulukon luominen, joka sisältää tilauspäivämäärän:

LUO TAULUKKO Tilaukset (Id INT IDENTITY PRIMARY KEY, ProductId INT NOT NULL, CustomerId INT NOT NULL, CreatedAt DATE NOT NULL OLETUS GETDATE(), ProductCount INT OLETUS 1, Hinta MONEY NOT NULL);

DEFAULT GETDATE() -lauseke määrittää, että jos päivämäärää ei anneta lisättäessä tietoja, se lasketaan automaattisesti GETDATE()-funktiolla.

Toinen esimerkki – etsitään tilaukset, jotka on tehty 16 päivää sitten:

SELECT * FROM Tilaukset WHERE DATEDIFF(päivä, Luotu, GETDATE()) = 16

Kirjailijalta: Tänään puhumme siitä, kuinka päivämääräfunktiot toimivat SQL:ssä. Seuraavassa taulukossa on luettelo kaikista tärkeistä käytettävissä olevista päivämäärä- ja aikatoiminnoista. On muitakin, joita useat DBMS:t tukevat. Tämä luettelo edustaa MySQL DBMS:ssä käytettävissä olevia toimintoja.

LISÄÄ PÄIVÄYS(). Lisää päivämäärät

ADDTIME(). Lisää aikaa

CONVERT_TZ(). Muuntaa aikavyöhykkeeltä toiselle

KURDATE(). Palauttaa nykyisen päivämäärän

CURRENT_DATE(), CURRENT_DATE. Synonyymit sanalle CURDATE()

CURRENT_TIME(), CURRENT_TIME. Synonyymit sanalle CURTIME()

CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP. Synonyymit sanalle NYT()

CURTIME(). Palauttaa nykyisen ajan

DATE_ADD(). Lisää kaksi päivämäärää

PÄIVÄMÄÄRÄMUOTO(). Asettaa määritetyn päivämäärämuodon

DATE_SUB(). Vähentää yhden päivämäärän toisesta

PÄIVÄMÄÄRÄ(). Poimii päivämääräosan lausekkeesta, joka edustaa päivämäärää tai aikaa ja päivämäärää

DATEDIFF(). Vähentää yhden päivämäärän toisesta

PÄIVÄ(). Synonyymi sanalle DAYOFMONTH()

PÄIVÄNIMI(). Palauttaa viikonpäivän

DAYOFMONT(). Palauttaa kuukauden päivän (1-31)

VIIKONPÄIVÄ(). Palauttaa argumentin viikonpäivän indeksin

DAYOFYEAR(). Palauttaa vuoden päivän numeron (1-366)

OTTAA TALTEEN. Hakee päivämääräosan

FROM_DAYS(). Muuntaa päivän numeron päivämääräksi

FROM_UNIXTIME(). Muotoilee päivämäärän UNIX-aikaleimaksi

TUNNIN(). Hakee tunnin

VIIMEINEN PÄIVÄ. Palauttaa argumentin kuun viimeisen päivän

LOCALTIME(), LOCALTIME. Synonyymi sanalle NYT()

LOCALTIMESTAMP, LOCALTIMESTAMP(). Synonyymi sanalle NYT()

MAKEDATE(). Luo päivämäärän vuodesta ja vuoden päivästä

TEHDÄ AIKAA. TEHDÄ AIKAA(). MIKROSEkunti(). Palauttaa mikrosekunnit argumentista

MINUUTI(). Palauttaa minuutteja väittelystä

KUUKAUSI(). Kuukauden palauttaminen päivämäärästä

KUUKAUSINIMI(). Palauttaa kuukauden nimen

NYT(). Palauttaa nykyisen päivämäärän ja kellonajan

PERIOD_LISÄÄ(). Lisää ajanjakson vuosi-kuukauteen

PERIOD_DIFF(). Palauttaa jaksojen välisten kuukausien määrän

QUARTER(). Palauttaa argumentin neljänneksen

SEC_TO_TIME(). Muuntaa sekunnit "HH:MM:SS" muotoon

TOINEN(). Palauttaa sekuntia (0-59)

STR_TO_DATE(). Muuntaa merkkijonon päivämääräksi

ALAPÄIVÄYS(). Kun sitä kutsutaan kolmella argumentilla, synonyymi DATE_SUB().

SUBTIME(). Vähentää aikaa

SYSDATE(). Palauttaa funktion suoritusajan

AIKAMUOTO(). Asettaa ajan muodon

TIME_TO_SEC(). Palauttaa sekunteiksi muunnetun argumentin

AIKA(). Poimii ohitetun lausekkeen aikaosan

TimeDiff(). Vähentää aikaa

AIKALEIMA(). Yhdellä argumentilla tämä funktio palauttaa päivämäärä- tai päivämäärä-aikalausekkeen. Kahdella argumentilla - lisää nämä kaksi argumenttia

TIMESTAMPADD(). Lisää välin päivämäärä- ja aikalausekkeeseen

TIMESTAMPDIFF(). Vähentää aikavälin päivämäärä-aikalausekkeesta

TÄMÄN PÄIVÄN(). Palauttaa päivämääräargumentin päiviksi muunnetuna

UNIX_TIMESTAMP(). Palauttaa UNIX-aikaleiman

UTC_DATE(). Palauttaa nykyisen UTC-päivämäärän

UTC_TIME(). Palauttaa nykyisen UTC-ajan

UTC_TIMESTAMP(). Palauttaa nykyisen UTC-päivämäärän ja -ajan

VIIKKO(). Palauttaa viikon numeron

VIIKONPÄIVÄ(). Palauttaa viikonpäivän indeksin

WEEKOFYEAR(). Palauttaa kalenteriviikon numeron (1-53)

YEAR(). Palauttaa vuoden

YEARWEEK(). Palauttaa vuoden ja viikon

LISÄPÄIVÄM.

Kun sitä kutsutaan toisella argumentilla, joka on määritetty INTERVAL, ADDDATE() on synonyymi DATE_ADD(). Asiaan liittyvä funktio SUBDATE() on synonyymi sanalle DATE_SUB(). Lisätietoja INTERVAL-lohkoargumentista on kohdassa DATE_ADD().

Kun kutsutaan toisella argumentilla päivinä, MySQL käsittelee tätä päivien kokonaislukumääränä, joka lisätään lausekkeeseen.

LISÄÄAIKA(laus1,laus2)

ADDTIME() lisää laus2:n lausekkeeseen expr1 ja palauttaa tuloksen. Laus1 on aika- tai päivämäärä-aikalauseke, kun taas laus2 on aikalauseke.

CONVERT_TZ(dt,alkaen_tz,to_tz)

Muuntaa päivämäärän ja kellonajan arvon dt parametrissa from_tz määritetystä aikavyöhykkeestä parametrissa to_tz määritetyksi aikavyöhykkeeksi ja palauttaa tuloksena olevan arvon. Tämä funktio palauttaa NULL-arvon, jos argumentit ovat virheellisiä.

CURDATE()

Palauttaa nykyisen päivämäärän arvona muodossa "VVVV-KK-PP" tai VVVVKKPP sen mukaan, käytetäänkö tätä funktiota merkkijono- vai numeerisessa kontekstissa.

CURRENT_DATE ja CURRENT_DATE()

CURRENT_DATE ja CURRENT_DATE() ovat synonyymejä sanalle CURDATE()

KURTIME()

Palauttaa nykyisen ajan arvona muodossa "TT:MM:SS" tai HHMMSS sen mukaan, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa. Arvo ilmaistaan ​​nykyiselle aikavyöhykkeelle.

CURRENT_TIME ja CURRENT_TIME()

CURRENT_TIME ja CURRENT_TIME() ovat synonyymejä sanalle CURTIME().

CURRENT_TIMESTAMP ja CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP ja CURRENT_TIMESTAMP() ovat synonyymejä sanalle NYT().

PÄIVÄYS(expr)

Hakee päivämääräosan päivämäärän tai päivämäärän aika lausekkeen päivämäärän.

PÄIVÄMÄÄRÄJAISU(laus1;laus2)

DATEDIFF() palauttaa expr1.expr2 ilmaistuna kahden päivämäärän välisten päivien lukumääränä. Sekä laus1 että laus2 ovat päivämäärä- tai päivämäärä-aikalausekkeita. Laskelmissa käytetään vain päivämääräosia.

DATE_ADD(päivämäärä,INTERVAL-lukeyksikkö), DATE_SUB(päivämäärä,INTERVAL-lukeyksikkö)

Nämä funktiot suorittavat aritmeettisia operaatioita päivämäärillä. päivämäärä esitetään DATETIME- tai DATE-arvona, joka ilmaisee alkamispäivämäärän. expr on lauseke, joka määrittää väliarvon, joka lisätään tai vähennetään alkuperäisestä päivämäärästä. expr on merkkijono; se voi alkaa "-" negatiivisille intervalleille.

yksikkö on avainsana, joka määrittää lausekkeen mittayksiköt. INTERVAL-avainsana ja yksiköiden merkintätapa eivät erota kirjainkoolla. Seuraavassa taulukossa näkyy kunkin yksikköarvon lausargumentin odotettu muoto.

QUARTER- ja WEEK-arvot ovat saatavilla MySQL:ssä versiosta 5.0.0 lähtien.

DATE_FORMAT (päivämäärä, muoto)

Tämä komento muotoilee päivämäärän arvon määritetyn muotomerkkijonon mukaan. Muotoilurivillä voidaan käyttää seuraavia osoittimia. Muotoilmaisimia edeltää "%"-merkki.

%a. Viikonpäivän lyhennetty nimi (su..la)

%b. Lyhennetty kuukauden nimi (tam..joulukuu)

%Kanssa. Kuukauden numero (0…12)

%D. Kuukauden päivä englanninkielisellä jälkiliitteellä (0, 1, 2, 3,.)

%d. Kuukauden päivän numero (00..31)

%e. Kuukauden päivän numerotunnus (00..31)

%f. Mikrosekuntia (000000..999999)

%H. Tunti (00..23)

%h. Tunti (01..12)

%I. Tunti (01..12)

%i. Minuuttien numeromerkintä (00..59)

%J. Vuoden päivä (001..366)

%k. Tunti (0..23)

%l. Tunti (1..12)

%M. Kuukauden nimi (tammikuu..joulukuu)

%m. Kuukauden numerotunnus (00..12)

%R. Aamulla vai illalla

%r. Aika, 12 tunnin muoto (tt:mm:ss ja sen jälkeen AM tai PM)

%S. Sekuntia (00..59)

%s. Sekuntia (00..59)

%T. Aika, 24 tunnin muoto (tt:mm:ss)

%U. Viikko (00..53), jolloin sunnuntai on viikon ensimmäinen päivä

%u. Viikko (00..53), jolloin maanantai on viikon ensimmäinen päivä

%V. Viikko (01..53), jossa sunnuntai on viikon ensimmäinen päivä; käytetään %X:n kanssa

%v. Viikko (01..53), jossa maanantai on viikon ensimmäinen päivä; käytetään %x:n kanssa

%W. Viikonpäivän nimi (sunnuntai..lauantai)

% w. Viikonpäivä (0=sunnuntai..6=lauantai)

%X. Vuosi, jos viikon ensimmäinen päivä on sunnuntai, nelinumeroinen luku; käytetään yhdessä %V:n kanssa

%x. Vuosi, jos viikon ensimmäinen päivä on maanantai, nelinumeroinen luku; käytetään yhdessä %V:n kanssa

%Y. Vuosi, päivämäärä, neljä numeroa

%y. Vuoden numeerinen nimitys (kaksi numeroa)

%%. Kirjaimellisesti %-symboli

%x. x, kaikille.x, joita ei ole lueteltu yllä

DATE_SUB(päivämäärä, INTERVAL yksikkö)

Samanlainen kuin DATE_ADD()-funktio.

PÄIVÄ(päivämäärä)

PÄIVÄ() on synonyymi PÄIVÄKUUKAUSI()-funktiolle.

DAYNAME(päivämäärä)

Palauttaa määritetyn päivämäärän viikonpäivän.

KUUKAUDEN PÄIVÄ(päivämäärä)

Palauttaa kuukauden päivän määritetylle päivälle välillä 0–31.

VIIKKOPÄIVÄ(päivämäärä)

Palauttaa viikonpäivän indeksin (1 = sunnuntai, 2 = maanantai, ., 7 = lauantai). Nämä indeksiarvot noudattavat ODBC-standardia.

PÄIVÄ (päivämäärä)

Palauttaa vuoden päivän määritetylle päivämäärälle välillä 1–366.

OTE(yksikkö FROM päivämäärästä)

EXTRACT()-funktio käyttää samantyyppisiä yksikköosoittimia kuin DATE_ADD() tai DATE_SUB(), mutta ei suorita aritmeettisia operaatioita päivämäärille, vaan poimii yksikköosoittimen osan päivämäärästä.

FROM_DAYS(N)

DATE-arvo palautetaan ottaen huomioon päivien lukumäärä N.

Huomautus. Käytä FROM_DAYS() vanhoille päivämäärille huolellisesti. Toimintoa ei ole tarkoitettu toimimaan päivämääräarvojen kanssa ennen gregoriaanisen kalenterin käyttöönottoa (1582).

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp, muoto)

Palauttaa unix_timestamp-argumentin esityksen arvona muodossa "VVVV-KK-PP HH:MM:SS tai VVVVKKPPHHMMSS" riippuen siitä, käytetäänkö tätä funktiota merkkijono- vai numeerisessa kontekstissa. Arvo ilmaistaan ​​nykyisellä aikavyöhykkeellä. Parametri unix_timestamp on sisäinen aikaleima-arvo, jonka UNIX_TIMESTAMP()-funktio luo.

Jos muoto on määritetty, tulos muotoillaan muotomerkkijonon mukaan, jota käytetään samalla tavalla kuin DATE_FORMAT() -osiossa on kuvattu.

TUNTI (aika)

Palauttaa tunnit määritetystä ajasta. Palautetun arvon alue on 0-23. TIME-arvojen alue on kuitenkin itse asiassa paljon suurempi, joten HOUR voi palauttaa arvoja, jotka ovat suurempia kuin 23.

LAST_DAY(päivämäärä)

Ottaa päivämäärän tai päivämäärän ja kellonajan arvon ja palauttaa arvon, joka vastaa kuukauden viimeistä päivää. Palauttaa arvon NULL, jos argumentti on virheellinen.

LOCALTIME ja LOCALTIME()

LOCALTIME ja LOCALTIME() ovat synonyymeja sanalle NYT().

LOCALTIMESTAMP ja LOCALTIMESTAMP()

LOCALTIMESTAMP ja LOCALTIMESTAMP() ovat synonyymejä sanalle NYT().

MAKEDATE(vuosi,vuodenpäivä)

Palauttaa päivämäärän, määritetyn vuoden ja vuoden päivän. Päivän päivän arvon on oltava suurempi kuin 0 tai tulos on NULL.

MAKETIME (tunti, minuutti, sekunti)

Palauttaa aika-arvon, joka on laskettu argumenteista tunti, minuutti ja sekunti.

MIKROSEkunti(laus.)

Palauttaa mikrosekuntia aikalausekkeesta tai datetime(expr) -lausekkeesta numerona välillä 0 - 999999.

MINUUTI (aika)

Palauttaa minuutit määritetylle ajalle välillä 0 - 59.

KUUKAUSI(päivämäärä)

Palauttaa kuukauden määritetylle päivälle välillä 0–12.

KUUKAUSI NIMI(päivämäärä)

Palauttaa koko kuukauden nimen määritetylle päivälle.

NYT()

Palauttaa nykyisen päivämäärän ja kellonajan arvona muodossa "VVVV-KK-PP TT:MM:SS" tai VVVVKKDDHHMMSS sen mukaan, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa. Tämä arvo ilmaistaan ​​nykyisellä aikavyöhykkeellä.

PERIOD_LISÄÄ(P,N)

Lisää N kuukautta ajanjaksoon P (muodossa VVKK tai VVVVKK). Palauttaa arvon muodossa VVVVKK. Huomaa, että jaksoargumentti P ei ole päivämääräarvo.

PERIOD_DIFF(P1,P2)

Palauttaa jaksojen P1 ja P2 välisten kuukausien määrän. Jaksot P1 ja P2 on määritettävä muodossa VVKK tai VVVVKK. Huomaa, että pisteargumentit P1 ja P2 eivät ole päivämääräarvoja.

NELJÄNNES(päivämäärä)

Palauttaa määritetyn päivämäärän vuosineljänneksen välillä 1–4.

Toisen kerran)

Palauttaa sekuntiarvon ajanjaksolle 0–59.

SEC_TO_TIME(sekuntia)

Palauttaa sekuntiargumentin, joka on muutettu tunneiksi, minuutteiksi ja sekunneiksi muodossa "TT:MM:SS" tai HHMMSS sen mukaan, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa.

STR_TO_DATE(str,muoto)

Tämä on DATE_FORMAT()-funktion käänteisarvo. Se hyväksyy merkkijonon str ja muodon merkkijonomuodon. Funktio STR_TO_DATE() palauttaa DATETIME, jos muotomerkkijono sisältää sekä päivämäärän että kellonajan. Muussa tapauksessa se palauttaa DATE tai TIME, jos merkkijono sisältää vain päivämäärän tai kellonajan.

ALAPÄIVÄMÄÄRÄ(päivämäärä,INTERVAL, lyhennysyksikkö) ja ALAPÄIVÄMÄÄRÄ(päivitys, päivää)

Jos ALAPÄIVÄMÄÄRÄ() kutsutaan toisella argumentilla, joka on määritetty INTERVAL, funktio on synonyymi DATE_SUB(). Lisätietoja INTERVAL-argumentista on kohdassa DATE_ADD().

ALAAIKA(laus1,laus2)

SUBTIME()-funktio palauttaa expr1. Laus2 ilmaistaan ​​arvona samassa muodossa kuin laus1. Laus1:n arvo on aika- tai päivämäärä-aikalauseke, ja lausekkeen laus2 arvo on aikalauseke.

SYSDATE()

Palauttaa nykyisen päivämäärän ja kellonajan arvona muodossa "VVVV-KK-PP TT:MM:SS" tai VVVVKKDDHHMMSS riippuen siitä, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa.

AIKA (laus.)

Purkaa lausekkeen expr aika-osan ja palauttaa sen merkkijonona.

TIMEDIFF(laus1;laus2)

TIMEDIFF() palauttaa expr1. expr2 ilmaistaan ​​aika-arvona. Arvot expr1 ja expr2 ovat joko aika- tai päivämäärä-aikalausekkeita, mutta molempien on oltava samaa tyyppiä.

TIMESTAMP (laus), TIMESTAMP (laus1, laus2)

Kun yksi argumentti on määritetty, tämä funktio palauttaa päivämäärä- tai päivämäärä-aikalausekkeen expr päivämäärä-aika-arvona. Kahdella argumentilla se lisää aikalausekkeen expr2 päivämäärä- tai päivämäärä-aikalausekkeeseen expr1 ja palauttaa tuloksen päivämäärä-aika-arvona.

TIMESTAMPADD(yksikkö,väli,päivämääräaika_laus.)

Tämä funktio lisää kokonaislukuvälilausekkeen päivämäärä- tai aikalausekkeeseen datetime_expr. Välin yksiköt määritetään yksikköargumentilla, joka voi olla jokin seuraavista arvoista:

Yksikköarvo voidaan määrittää käyttämällä jotakin yllä esitetyistä avainsanoista tai etuliitteellä SQL_TSI_. Esimerkiksi DAY ja SQL_TSI_DAY ovat kelvollisia arvoja.

TIMESTAMPDIFF(yksikkö,päivämäärä_aika_laus.1,päivämäärä_aika_expr2)

Palauttaa kokonaislukueron päivämäärä- tai päiväysaika-lausekkeiden päivämääräaika_lauseke1 ja päivämääräaika_lauseke2 välillä. Tuloksen mittayksiköt määritetään yksikköargumentilla. Yksikköargumentin kelvolliset arvot ovat samat kuin TIMESTAMPADD()-funktiossa luetellut arvot.

TIME_FORMAT(aika, muoto)

Tätä funktiota käytetään samalla tavalla kuin DATE_FORMAT()-funktiota, mutta muotomerkkijono voi sisältää vain tuntien, minuuttien ja sekuntien muotomäärityksiä.

Jos aika-arvo sisältää tuntiosan, joka on suurempi kuin 23, kellon muotoilmaisimet %H ja %k ​​antavat arvon, joka on suurempi kuin normaali alue 0–23. Muut kellomuodon ilmaisimet antavat arvoksi modulo 12 tuntia.

TIME_TO_SEC(aika)

Palauttaa aika-argumentin sekunteiksi muunnettuina.

TO_DAYS(päivämäärä)

Palauttaa päivän numeron (päivien lukumäärä vuodesta 0) annetulle päivämäärälle.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(päivämäärä)

Jos tätä funktiota kutsutaan ilman argumenttia, se palauttaa Unix-aikaleiman (sekuntia "1970-01-01 00:00:00" UTC jälkeen) positiivisena kokonaislukuna. Jos UNIX_TIMESTAMP() kutsutaan päivämääräargumentilla, se palauttaa argumentin arvon ilmaistuna sekunteina "1970-01-01 00:00:00" UTC jälkeen. päivämäärä voi olla DATE-merkkijono, DATETIME-merkkijono, TIMESTAMP tai numero muodossa VVKKPP tai VVVVKKPP.

UTC_DATE, UTC_DATE()

Palauttaa nykyisen UTC-päivämäärän arvona muodossa "VVVV-KK-PP" tai VVVVKKPP sen mukaan, käytetäänkö tätä funktiota merkkijono- vai numeerisessa kontekstissa.

UTC_TIME, UTC_TIME()

Palauttaa nykyisen UTC-ajan arvona muodossa "TT:MM:SS" tai HHMMSS sen mukaan, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa.

UTC_TIMESTAMP, UTC_TIMESTAMP()

Palauttaa nykyisen UTC-päivämäärän ja -ajan arvona "VVVV-KK-PP TT:MM:SS" tai muodossa VVVVKKPPHHMMSS sen mukaan, käytetäänkö tätä funktiota merkkijono- vai numeerisessa kontekstissa.

VIIKKO(päivämäärä[,tila])

Tämä funktio palauttaa viikon numeron annetulle päivämäärälle. Kahden argumentin WEEK()-lomakkeella voit määrittää, alkaako viikko sunnuntaina vai maanantaina ja onko palautusarvon oltava välillä 0-53 vai 1-53. Jos mode-argumentti jätetään pois, default_week_format järjestelmämuuttujaa käytetään

VIIKONPÄIVÄ(päivämäärä)

Palauttaa viikonpäivän indeksin annetulle päivämäärälle (0 = maanantai, 1 = tiistai, 6 = sunnuntai).

VIIKKOVUOSI(päivämäärä)

Palauttaa kalenteriviikon annetulle päivämäärälle numerona välillä 1 - 53. WEEKOFYEAR() on yhteensopivuusfunktio, joka vastaa funktiota WEEK(päivämäärä,3).

YEAR(päivämäärä)

Palauttaa vuoden annetulle päivämäärälle, joka vaihtelee välillä 1000–9999, tai nollan päivämäärä.nollalle.

YEARWEEK(päivämäärä), YEARWEEK(päivämäärä,tila)

Palauttaa vuoden ja viikon annetulle päivämäärälle. Mode-argumentti toimii täsmälleen kuten WEEK()-funktion mode-argumentti. Tuloksena oleva vuosi voi olla erilainen kuin vuoden ensimmäisen ja viimeisen viikon päivämääräargumentin vuosi.

Huomautus. Viikon numero eroaa siitä, minkä WEEK() palauttaa (0) valinnaisille 0- tai 1-argumenteille, koska WEEK() palauttaa viikon tietyn vuoden kontekstissa.

SQL - Oppitunti 13. Päivämäärä- ja aikafunktiot

Nämä toiminnot on suunniteltu toimimaan kalenteritietotyyppien kanssa. Katsotaanpa sopivimpia.
  • CURDATE(), CURTIME() ja NOW() Ensimmäinen funktio palauttaa nykyisen päivämäärän, toinen palauttaa nykyisen ajan ja kolmas palauttaa nykyisen päivämäärän ja kellonajan. Vertailla:

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


    CURDATE()- ja NOW()-funktiot ovat hyödyllisiä lisättäessä tietokantaan tietueita, jotka käyttävät nykyistä aikaa. Myymälässämme kaikki toimitukset ja myynnit käyttävät nykyistä aikaa. Siksi toimituksia ja myyntiä koskevien tietueiden lisäämiseen on kätevää käyttää CURDATE()-funktiota. Oletetaan esimerkiksi, että tuote on saapunut myymäläämme, lisätään tiedot siitä Toimitus (saapuvat) -taulukkoon:

    INSERT INTO saapuvat (id_vendor, date_coming) ARVOT ("2", curdate());


    Jos tallentaisimme toimituspäivän dataaika-tyyppinä, niin NOW()-funktio sopisi meille paremmin.

  • LISÄÄ PÄIVÄMÄÄRÄ(päivämäärä, AIKAVÄLI arvo) Funktio palauttaa päivämäärän ja siihen lisätyn arvon. Arvon arvo voi olla negatiivinen, jolloin viimeinen päivämäärä pienenee. Katsotaan milloin toimittajamme toimittivat tavarat:

    SELECT id_vendor, date_incoming FROM incoming;


    Oletetaan, että teimme virheen syöttäessämme ensimmäisen toimittajan päivämäärää, pienennetään sen päivämäärää yhdellä päivällä:
    Arvo voi olla päivien lisäksi myös viikkoja (WEEK), kuukausia (MONTH), neljänneksiä (QUARTER) ja vuosia (YEAR). Lyhennetään esimerkiksi toisen toimittajan toimituspäivää yhdellä viikolla:
    Toimitukset (saapuvat) -taulukossamme käytimme päivämäärätyyppiä Toimituspäivämäärä (date_incoming) -sarakkeessa. Kuten muistat oppitunnista 2, tämä tietotyyppi on suunniteltu tallentamaan vain päivämäärät. Mutta jos käyttäisimme dataaika-tyyppiä, näyttäisimme päivämäärän lisäksi myös kellonajan. Sitten voisimme käyttää ADDDATE-toimintoa myös ajalla. Arvo voi tässä tapauksessa olla sekunteja (SECOND), minuutteja (MINUTE), tunteja (HOUR) ja niiden yhdistelmiä:
    minuuttia ja sekuntia (MINUTE_SECOND),
    tunnit, minuutit ja sekunnit (HOUR_SECOND),
    tunnit ja minuutit (HOUR_MINUTE),
    päivät, tunnit, minuutit ja sekunnit (DAY_SECOND),
    päivät, tunnit ja minuutit (DAY_MINUTE),
    päivät ja tunnit (DAY_HOUR),
    vuotta ja kuukautta (YEAR_MONTH).
    Lisätään esimerkiksi kaksi tuntia ja 45 minuuttia päivämäärään 15. huhtikuuta 2011:

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



  • ALAPÄIVÄMÄÄRÄ(päivämäärä, VÄLI-arvo) -funktio on identtinen edellisen kanssa, mutta suorittaa vähennystoiminnon summan sijaan.

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



  • PERIOD_ADD(kausi, n)-funktio lisää n kuukautta päivämäärän arvojaksoon. Huomautus: päivämäärän arvon on oltava VVVVKK-muodossa. Lisätään 2 kuukautta helmikuuhun 2011 (201102):

    VALITSE PERIOD_LISÄÄ(201102, 2);



  • TIMESTAMPADD(väli, n, päivämäärä) funktio lisää päivämäärän päivämäärään aikavälin n, jonka arvot määritellään intervalliparametrilla. Intervalliparametrin mahdolliset arvot:

    FRAC_SECOND - mikrosekuntia
    SECOND - sekuntia
    MINUTE - minuuttia
    HOUR - tuntia
    PÄIVÄ - päivää
    VIIKKO - viikkoa
    KUUKAUSI - kuukautta
    NELJÄNNES - lohkot
    YEAR - vuotta

    SELECT TIMESTAMPADD(PÄIVÄ, 2, "2011-04-02");



  • TIMEDIFF(päivämäärä1, päivämäärä2) laskee eron kahden päivämäärän välillä tunteina, minuutteina ja sekunteina.

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



  • DATEDIFF(päivämäärä1, päivämäärä2) laskee kahden päivämäärän välisen eron päivinä. Haluamme esimerkiksi selvittää, kuinka kauan sitten toimittaja "Williams" (id=1) toimitti meille tavaroita:

  • PERIOD_DIFF(kausi1, jakso2)-funktio laskee kuukausieron kahden VVVVKK-muodossa esitetyn päivämäärän välillä. Selvitetään tammikuun 2010 ja elokuun 2011 välinen ero:

    SELECT PERIOD_DIFF(201108, 201001);



  • TIMESTAMPDIFF(väli, päivämäärä1, päivämäärä2) funktio laskee päivämäärän päivämäärä2 ja päivämäärä1 välisen eron intervalliparametrissa määritetyissä yksiköissä. Intervalliparametrin mahdolliset arvot:

    FRAC_SECOND - mikrosekuntia
    SECOND - sekuntia
    MINUTE - minuuttia
    HOUR - tuntia
    PÄIVÄ - päivää
    VIIKKO - viikkoa
    KUUKAUSI - kuukautta
    NELJÄNNES - lohkot
    YEAR - vuotta

    SELECT TIMESTAMPDIFF(DAY, "2011-04-02", "2011-04-17") AS päivää, TIMESTAMPDIFF(HOUR, "2011-04-16 20:14:00", "2011-04-17 23:58" :20") AS tuntia;



  • SUBTIME(päivämäärä, aika) -funktio vähentää ajan päivämäärästä ja ajasta:

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



  • DATE(datetime) palauttaa päivämäärän ja leikkaa aikaa. Esimerkiksi:

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



  • TIME (datetime) palauttaa ajan ja lyhentää päivämäärän. Esimerkiksi:

    VALITSE AIKA("2011-04-15 00:03:20");



  • TIMESTAMP(päivämäärä) -funktio ottaa päivämäärän ja palauttaa täyden version ajan kanssa. Esimerkiksi:

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



  • DAY(päivämäärä) ja DAYOF MONTH(päivämäärä) ovat synonyymejä toimintoja, jotka palauttavat kuukauden päivän sarjanumeron päivämäärästä:

    VALITSE PÄIVÄ("2011-04-17"), DAYOFMONTH("2011-04-17");



  • PÄIVÄNIMI(päivämäärä), DAYOFWEEK(päivämäärä) ja WEEKDAY(päivämäärä) funktiot palauttavat viikonpäivän, ensimmäinen - sen nimen, toinen - viikonpäivän numeron (laskettuna 1 - sunnuntaista 7 - lauantaihin), kolmas - viikonpäivän numeron (lasketaan klo 0 - maanantai, klo 6 - sunnuntai:

    VALITSE PÄIVÄNIMI("2011-04-17"), DAYOF WEEK("2011-04-17"), WEEKDAY("2011-04-17");



  • WEEK(päivämäärä), WEEKOFYEAR(päivämäärä) molemmat funktiot palauttavat vuoden viikon numeron, ensimmäinen päivämäärän tyypille ja toinen päivämäärän aikatyypiksi, ensimmäisellä on viikko sunnuntaista alkaen, toisella maanantaista:

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



  • KUUKAUSI(päivämäärä) ja MONTHNAME(päivämäärä) molemmat funktiot palauttavat kuukausiarvot. Ensimmäinen on sen numeerinen arvo (1 - 12), toinen on kuukauden nimi:

    VALITSE KUUKAUSI("2011-04-17"), KUUKAUSI NIMI("2011-04-17");



  • QUARTER(date)-funktio palauttaa vuosineljänneksen arvon (1 - 4):

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



  • YEAR(date)-funktio palauttaa vuoden arvon (1000 - 9999):

    VALITSE VUOSI("2011-04-17");



  • DAYOFYEAR(päivämäärä) palauttaa vuoden päivän järjestysluvun (1 - 366):

    SELECT DAYOFYEAR("17.04.2011");



  • HOUR(datetime) palauttaa ajan tuntiarvon (0 - 23):

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



  • MINUTE(datetime) palauttaa ajan minuuttiarvon (0 - 59): SELECT UNIX_TIMESTAMP("2011-04-17"), FROM_UNIXTIME(1302524000);

  • TIME_TO_SEC(aika) ja SEC_TO_TIME(n) vastavuoroiset toiminnot. Ensimmäinen muuntaa ajan sekunteiksi, jotka ovat kuluneet päivän alusta. Toinen päinvastoin ottaa sekuntien määrän päivän alusta ja muuntaa ne ajalla:

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



  • MAKEDATE(vuosi, n) -funktio ottaa vuoden ja päivän numeron vuonna ja muuntaa ne päivämääräksi:

    VALITSE MAKEDATE(2011, 120);



No, siinä kaikki tälle päivälle. Seuraavalla kerralla tarkastelemme toimintoja, jotka auttavat muuttamaan päivämäärät muodosta toiseen.