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ä Etsi SQL:stä kaikki käyttäjät, joiden syntymäpäivä on ensi kuussa Yllä olevien tapausten lisäksi, jotka koskevat päivämäärien käyttöä SQL:ssä, suosittelen, että luet seuraavien operaattoreiden dokumentaatiot: 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. Kokoonpanofunktiot suorittavat laskelmia sarakearvojen ryhmästä ja palauttavat aina yhden arvon näiden laskelmien tuloksena. Transact-SQL tukee useita yleisiä aggregaattitoimintoja: Laskee sarakkeen sisältämien tietojen aritmeettisen keskiarvon. Arvojen, joille laskenta suoritetaan, on oltava numeerisia. 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). Laskee sarakkeen arvojen kokonaissumman. Arvojen, joille laskenta suoritetaan, on oltava numeerisia. 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). Samanlainen kuin laskentafunktio, sillä erolla, että se palauttaa BIGINT-tietoarvon. Säännöllisten aggregaattifunktioiden käyttöä SELECT-lauseessa käsitellään seuraavassa artikkelissa. 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. Transact-SQL:n numeeriset funktiot ovat matemaattisia funktioita numeeristen arvojen muokkaamiseen. Luettelo numeerisista funktioista ja niiden lyhyet kuvaukset ovat alla olevassa taulukossa: Palauttaa numeerisen lausekkeen n itseisarvon (eli negatiiviset arvot palautetaan positiivisina). SELECT ABS(-5.320) -- palautus 5.320 SELECT ABS(8.90) -- palautus 8.90 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ä. Trigonometriset funktiot, jotka laskevat arvon n kosinin, sinin, tangentin ja kotangentin. Tuloksen tietotyyppi on FLOAT. DEGREES-funktio muuntaa radiaanit asteina, RADIANS, vastaavasti, päinvastoin. SELECT DEGREES(PI() / 4) -- Palauttaa 45 SELECT COS(RADIANS(60.0)) -- Palauttaa 0.5 Pyöristää luvun suurempaan kokonaislukuarvoon. SELECT CEILING(-5.320) -- Palautukset -5 SELECT CEILING(8.90) -- Palautukset 9 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 Pyöristää alas pienimpään kokonaislukuarvoon. SELECT FLOOR(5.88) -- Palauttaa 5 Laskee e n:n arvon. LOG(n) - laskee luvun n luonnollisen logaritmin (eli kantaluvun e), LOG10(n) - laskee luvun n desimaalilogaritmin (kanta 10). Palauttaa π:n arvon (3,1415). Laskee x y:n arvon. Palauttaa mielivaltaisen luvun FLOAT-tyyppiä arvoalueella 0 ja 1 välillä. Palauttaa taulukon rivien määrän, jotka on käsitelty viimeisellä järjestelmän suorittamalla Transact-SQL-käskyllä. Palautusarvo on tyyppiä BIGINT. Palauttaa n:n etumerkin numerona: +1 jos positiivinen, -1 jos negatiivinen. SQRT(n) - laskee luvun n neliöjuuren, NELIÖ(n) - palauttaa argumentin n neliön. 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: Palauttaa nykyisen järjestelmän päivämäärän ja kellonajan. SELECT GETDATE() 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") 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") 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") 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 käsittelevät sarakearvoja, jotka ovat tyypillisesti merkkitietotyyppejä. Transact-SQL:n tuetut merkkijonofunktiot ja niiden lyhyet kuvaukset on esitetty alla olevassa taulukossa: Muuntaa määritetyn merkin vastaavaksi ASCII-koodin kokonaisluvuksi. SELECT ASCII("W") -- 87 SELECT UNICODE("u") -- 1102 Muuntaa ASCII-koodin (tai Unicoden, jos NCHAR) sopivaksi merkiksi. SELECT CHAR(87) -- "W" SELECT NCHAR(1102) -- "yu" Palauttaa alimerkkijonon str1 esiintymisen aloituskohdan merkkijonossa str2. Jos merkkijono str2 ei sisällä osamerkkijonoa str1, palautetaan arvo 0 Palauttaa 5 SELECT CHARINDEX ("morf", "polymorfismi") 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") 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) Palauttaa argumentissa määritetyn merkkijonon str merkkien määrän (ei tavujen määrää), mukaan lukien välilyönnit. 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-toiminto poistaa välilyönnit merkkijonosta str, RTRIM vastaavasti poistaa välilyönnit merkkijonon lopusta. Palauttaa Unicode-merkkijonon, johon on lisätty erottimet syötteen muuntamiseksi kelvolliseksi erotetuksi tunnisteeksi. DECLARE @str nvarchar(30) = "Synkronointi"; -- Palauta "[Sync]" SELECT QUOTENAME(@str) Palauttaa kuvion p ensimmäisen esiintymän aloituskohdan annetussa lausekkeessa tai nollan, jos kuviota ei löydy. Palauttaa 4 SELECT PATINDEX("%chro%", "Synchronization") Korvaa kaikki osamerkkijonon str2 esiintymät merkkijonossa str1 alimerkkijonolla str3. Palauttaa "Desynchronization" SELECT REPLACE("Synkronointi", "Synkronointi", "Desynkronointi") Toistaa merkkijonon str i kertaa. Palauttaa "aBaBaBaBaB" SELECT REPLICATE("aB", 5) Tulostaa merkkijonon käänteisessä järjestyksessä. Palauttaa "yaitsazinorkhniS" SELECT REVERSE("Synkronointi") Palauttaa nelimerkkisen soundex-koodin, jota käytetään määrittämään, ovatko kaksi merkkijonoa samanlaisia. Toimii vain ASCII-merkeille. Palauttaa välilyöntejä, joiden pituus on määritetty pituusparametrissa. Samanlainen kuin REPLICATE(" ", pituus). 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) 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") Poimii merkkijonosta str, alkaen kohdasta a, pituuspituisen alijonon. 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: Muuntaa lausekkeen w määritetyksi tietotyypiksi (jos mahdollista). Argumentti w voi olla mikä tahansa kelvollinen lauseke. Palauttaa 3 SELECT CAST (3,1258 AS INT) Palauttaa ensimmäisen lausekkeen arvon lausekkeiden a1, a2, ... luettelosta, joka ei ole nolla. Palauttaa tietokantaobjektin (taulukko tai näkymä) objektin sarakkeen pituuden. Palauttaa 4 SELECT COL_LENGTH("Työntekijä", "Id") Vastaa CAST-funktiota, mutta argumentit on määritetty eri tavalla. Voidaan käyttää minkä tahansa tietotyypin kanssa. Palauttaa nykyisen päivämäärän ja kellonajan. Palauttaa nykyisen käyttäjän nimen. Palauttaa lausekkeen z käyttämien tavujen määrän. Tämä kysely palauttaa kunkin kentän pituuden SELECT DATALENGTH(FirstName) FROM Employee Palauttaa 1, jos nolla-arvojen käyttö tietokannassa dbname on ANSI SQL -standardin mukainen. Palauttaa arvon expr, jos se ei ole NULL; muussa tapauksessa arvo palautetaan. Määrittää, onko lauseke expr kelvollinen numeerinen tyyppi. Luo yksilöllisen tunnistenumeron tunnuksen, joka koostuu 16-tavuisesta binäärimerkkijonosta, joka on suunniteltu tallentamaan UNIQUEIDENTIFIER-tietotyypin arvoja. 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.) Palauttaa nollan, jos lausekkeilla laus1 ja laus2 on samat arvot. Kysely palauttaa NULL-arvon projektille, jonka numero = "p1" SELECT NULLIF(Numero, "p1") Projektista Palauttaa tietokantapalvelimen ominaisuuksien tiedot. Palauttaa nykyisen käyttäjän tunnuksen. Palauttaa käyttäjätunnuksen käyttäjänimen. Jos käyttäjää ei ole määritetty, palautetaan nykyinen käyttäjätunnus. Palauttaa käyttäjänimen määritetyllä tunnuksella. Jos tunnistetta ei ole määritetty, palautetaan nykyisen käyttäjän nimi. Periaatteessa metatietofunktiot palauttavat tietoja tietystä tietokannasta ja tietokantaobjekteista. Alla olevassa taulukossa on yhteenveto joistakin tärkeimmistä metatietotoiminnoista ja niiden lyhyet kuvaukset: 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) Palauttaa tiedot määritetystä sarakkeesta. Palauttaa PRECISION-ominaisuuden arvon Työntekijä-taulukon Id-sarakkeelle SELECT COLUMNPROPERTY (OBJECT_ID("Työntekijä"), "Id", "tarkkuus") Palauttaa tietokannan ominaisuuden arvon. Palauttaa IsNullConcat-ominaisuuden arvon SampleDb-tietokannassa SELECT DATABASEPROPERTY ("SampleDb", "IsNullConcat") Palauttaa tietokannan tunnuksen db_name. Jos tietokannan nimeä ei ole määritetty, palautetaan nykyisen tietokannan tunnus. Palauttaa tietokannan nimen, jolla on db_id. Jos tunnistetta ei ole määritetty, palautetaan nykyisen tietokannan nimi. Palauttaa taulukkotaulukon indeksoidun sarakkeen nimen. Sarake osoitetaan indeksin tunnisteella i ja sarakkeen sijainnilla no kyseisessä indeksissä. Palauttaa nimetyn indeksin tai tilaston ominaisuudet määritetylle taulukon tunnusnumerolle, indeksin tai tilaston nimen ja ominaisuuden nimen. Palauttaa tietokantaobjektin nimen, jolla on tunniste obj_id. SELECT OBJECT_NAME(245575913); Palauttaa tietokannan objektitunnisteen obj_nimi. Palauttaa 245575913 - Työntekijätaulukon tunnus SELECT OBJECT_ID("Työntekijä") 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 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. ADDTIME() lisää laus2:n lausekkeeseen expr1 ja palauttaa tuloksen. Laus1 on aika- tai päivämäärä-aikalauseke, kun taas laus2 on aikalauseke. 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ä. 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() ovat synonyymejä sanalle CURDATE() 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() ovat synonyymejä sanalle CURTIME(). CURRENT_TIMESTAMP ja CURRENT_TIMESTAMP() ovat synonyymejä sanalle NYT(). Hakee päivämääräosan päivämäärän tai päivämäärän aika lausekkeen päivämäärän. 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. 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. 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ä Samanlainen kuin DATE_ADD()-funktio. PÄIVÄ() on synonyymi PÄIVÄKUUKAUSI()-funktiolle. Palauttaa määritetyn päivämäärän viikonpäivän. Palauttaa kuukauden päivän määritetylle päivälle välillä 0–31. Palauttaa viikonpäivän indeksin (1 = sunnuntai, 2 = maanantai, ., 7 = lauantai). Nämä indeksiarvot noudattavat ODBC-standardia. Palauttaa vuoden päivän määritetylle päivämäärälle välillä 1–366. 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ä. 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). 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. 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. 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() ovat synonyymeja sanalle NYT(). LOCALTIMESTAMP ja LOCALTIMESTAMP() ovat synonyymejä sanalle NYT(). 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. Palauttaa aika-arvon, joka on laskettu argumenteista tunti, minuutti ja sekunti. Palauttaa mikrosekuntia aikalausekkeesta tai datetime(expr) -lausekkeesta numerona välillä 0 - 999999. Palauttaa minuutit määritetylle ajalle välillä 0 - 59. Palauttaa kuukauden määritetylle päivälle välillä 0–12. Palauttaa koko kuukauden nimen määritetylle päivälle. 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ä. Lisää N kuukautta ajanjaksoon P (muodossa VVKK tai VVVVKK). Palauttaa arvon muodossa VVVVKK. Huomaa, että jaksoargumentti P ei ole päivämääräarvo. 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. Palauttaa määritetyn päivämäärän vuosineljänneksen välillä 1–4. Palauttaa sekuntiarvon ajanjaksolle 0–59. 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. 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. 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(). 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. 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. Purkaa lausekkeen expr aika-osan ja palauttaa sen merkkijonona. 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ä. 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. 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. 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. 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. Palauttaa aika-argumentin sekunteiksi muunnettuina. Palauttaa päivän numeron (päivien lukumäärä vuodesta 0) annetulle päivämäärälle. 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. 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. Palauttaa nykyisen UTC-ajan arvona muodossa "TT:MM:SS" tai HHMMSS sen mukaan, käytetäänkö funktiota merkkijono- vai numeerisessa kontekstissa. 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. 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 Palauttaa viikonpäivän indeksin annetulle päivämäärälle (0 = maanantai, 1 = tiistai, 6 = sunnuntai). 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). Palauttaa vuoden annetulle päivämäärälle, joka vaihtelee välillä 1000–9999, tai nollan päivämäärä.nollalle. 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. SELECT CURDATE(), CURTIME(), NOW(); INSERT INTO saapuvat (id_vendor, date_coming) ARVOT ("2", curdate()); SELECT id_vendor, date_incoming FROM incoming; SELECT ADDDATE("2011-04-15 00:02:00", INTERVAL "02:45" HOUR_MINUTE); SELECT SUBDATE("2011-04-15 00:02:00", INTERVAL "23:53" HOUR_MINUTE); VALITSE PERIOD_LISÄÄ(201102, 2); FRAC_SECOND - mikrosekuntia SELECT TIMESTAMPADD(PÄIVÄ, 2, "2011-04-02"); SELECT TIMEDIFF("2011-04-17 23:50:00", "2011_04-16 14:50:00"); SELECT PERIOD_DIFF(201108, 201001); FRAC_SECOND - mikrosekuntia 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; SELECT SUBTIME("2011-04-18 23:17:00", "02:15:30"); SELECT DATE("2011-04-15 00:03:20"); VALITSE AIKA("2011-04-15 00:03:20"); SELECT TIMESTAMP("2011-04-17"); VALITSE PÄIVÄ("2011-04-17"), DAYOFMONTH("2011-04-17"); VALITSE PÄIVÄNIMI("2011-04-17"), DAYOF WEEK("2011-04-17"), WEEKDAY("2011-04-17"); SELECT WEEK("2011-04-17"), WEEKOFYEAR("2011-04-17 23:40:00"); VALITSE KUUKAUSI("2011-04-17"), KUUKAUSI NIMI("2011-04-17"); SELECT QUARTER("2011-04-17"); VALITSE VUOSI("2011-04-17"); SELECT DAYOFYEAR("17.04.2011"); SELECT HOUR("2011-04-17 18:20:03"); SELECT TIME_TO_SEC("22:10:30"), SEC_TO_TIME(45368); VALITSE MAKEDATE(2011, 120);
VALITSE nimi, syntymä, CURRENT_DATE, (YEAR(CURRENT_DATE) - YEAR(syntymä)) - (OIKEALLE(CURRENT_DATE,5)
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;
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.Aggregaattifunktiot
Skalaarifunktiot
Numeeriset funktiot
Transact-SQL:n numeeriset funktiot
Toiminto
Syntaksi
Kuvaus
Käyttöesimerkki
ABS
ABS(n)
ACOS, ASIN, ATAN, ATN2
ACOS(n), ASIN(n), ATAN(n), ATN2(n, m)
COS, SIN, TAN, COT
COS(n), SIN(n), TAN(n), COT(n)
ASTEET, RADIAANIT
ASTEET(n), RADIAANIT(n)
KATTO
KATTO(n)
PYÖRISTÄÄ
ROUND(n, p, [t])
LATTIA
FLOOR(n)
EXP
EXP(n)
LOK, LOG10
LOG(n), LOG10(n)
P.I.
PI()
POWER
TEHO(x, y)
RAND
RAND()
ROWCOUNT_BIG
ROWCOUNT_BIG()
MERKKI
MERKINNÄ(n)
SQRT, NELIÖ
SQRT(n), NELIÖ(n)
Päivämäärätoiminnot
Transact-SQL-päivämääräfunktiot
Toiminto
Syntaksi
Kuvaus
Käyttöesimerkki
GETDATE
GETDATE()
DATEPART
DATEPART (tuote, päivämäärä)
DATENAME
DATENAME (tuote, päivämäärä)
DATEDIFF
DATEDIFF (tuote, dat1, dat2)
PÄIVÄMÄÄRÄ
DATEADD (tuote, n, päivämäärä)
Merkkijonofunktiot
Transact-SQL-merkkijonofunktiot
Toiminto
Syntaksi
Kuvaus
Käyttöesimerkki
ASCII, UNICODE
ASCII(merkki), UNIKOODI(merkki)
CHAR, NCHAR
CHAR(int), NCHAR(int)
CHARINDEX
CHARINDEX (str1, str2)
ERO
EROTUS (str1, str2)
VASEN OIKEA
LEFT (str, pituus), RIGHT (str, pituus)
LEN
PITKÄ(str)
ALA, YLÄ
ALA(str), UPPER(str)
LTRIM, RTRIM
LTRIM(str), RTRIM(str)
QUOTENAME
QUOTENAME(merkkijono)
PATINDEX
PATINDEKSI (%p%, expr)
KORVATA
KORVAA (str1, str2, str3)
TOISTAA
TOISTAA (str, i)
KÄÄNTEINEN
KÄÄNTEINEN (str)
ÄÄNI
SOUNDEX (str)
TILA
Space (pituus)
STR
STR (f[, len[, d]])
TAVARAT
TAVARAT (str1, a, pituus, str2)
SUBSTRING
SUBSTRING (str1, a, pituus)
Järjestelmän toiminnot
Transact-SQL-järjestelmätoiminnot
Toiminto
Syntaksi
Kuvaus
Käyttöesimerkki
HEITTÄÄ
CAST (w AS-tyyppi [(pituus)]
COALESCE
COALESCE (a1, a2)
COL_LENGTH
COL_LENGTH (obj, col)
MUUNTAA
MUUNNA (tyyppi[(pituus)], w)
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
NYKYINEN KÄYTTÄJÄ
NYKYINEN KÄYTTÄJÄ
TIETOJEN PITUUS
DATALENGTH(z)
GETANSINULL
GETANSINULL("dbname")
ISNULL
ISNULL (lause, arvo)
ISNUMERIC
ISNUMERIC (laus.)
UUSI
UUSIID()
NEWSEQUENTIALID
NEWSEQUENTIALID()
NULLIF
NULLIF (laus1, laus2)
PALVELINOMAISUUS
SERVERPROPERTY (omaisuuden nimi)
SYSTEM_USER
SYSTEM_USER
KÄYTTÄJÄTUNNUS
KÄYTTÄJÄTUNNUS()
USER_NAME
USER_NAME()
Metadatatoiminnot
Transact-SQL-metatietofunktiot
Toiminto
Syntaksi
Kuvaus
Käyttöesimerkki
COL_NAME
COL_NAME (tab_id, col_id)
SARAKEKIINTEISTÖ
SARAKE-OMAISUUS (tunnus, sarake, ominaisuus)
TIETOKANNAN OMAISUUS
TIETOKAnnan OMAISUUS (tietokanta, omaisuus)
DB_ID
DB_ID()
DB_NAME
DB_NAME()
INDEX_COL
INDEX_COL (taulukko, i, ei)
OMINAISUUDET
INDEXPROPERTY (obj_id, index_name, property)
OBJECT_NAME
OBJECT_NAME (obj_id)
OBJECT_ID
OBJECT_ID (objektin_nimi)
OBJEKTIKIINTEISTÖ
OBJEKTIOMAISUUS (obj_id, ominaisuus)
LISÄPÄIVÄM.
LISÄÄAIKA(laus1,laus2)
CONVERT_TZ(dt,alkaen_tz,to_tz)
CURDATE()
CURRENT_DATE ja CURRENT_DATE()
KURTIME()
CURRENT_TIME ja CURRENT_TIME()
CURRENT_TIMESTAMP ja CURRENT_TIMESTAMP()
PÄIVÄYS(expr)
PÄIVÄMÄÄRÄJAISU(laus1;laus2)
DATE_ADD(päivämäärä,INTERVAL-lukeyksikkö), DATE_SUB(päivämäärä,INTERVAL-lukeyksikkö)
DATE_FORMAT (päivämäärä, muoto)
DATE_SUB(päivämäärä, INTERVAL yksikkö)
PÄIVÄ(päivämäärä)
DAYNAME(päivämäärä)
KUUKAUDEN PÄIVÄ(päivämäärä)
VIIKKOPÄIVÄ(päivämäärä)
PÄIVÄ (päivämäärä)
OTE(yksikkö FROM päivämäärästä)
FROM_DAYS(N)
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp, muoto)
TUNTI (aika)
LAST_DAY(päivämäärä)
LOCALTIME ja LOCALTIME()
LOCALTIMESTAMP ja LOCALTIMESTAMP()
MAKEDATE(vuosi,vuodenpäivä)
MAKETIME (tunti, minuutti, sekunti)
MIKROSEkunti(laus.)
MINUUTI (aika)
KUUKAUSI(päivämäärä)
KUUKAUSI NIMI(päivämäärä)
NYT()
PERIOD_LISÄÄ(P,N)
PERIOD_DIFF(P1,P2)
NELJÄNNES(päivämäärä)
Toisen kerran)
SEC_TO_TIME(sekuntia)
STR_TO_DATE(str,muoto)
ALAPÄIVÄMÄÄRÄ(päivämäärä,INTERVAL, lyhennysyksikkö) ja ALAPÄIVÄMÄÄRÄ(päivitys, päivää)
ALAAIKA(laus1,laus2)
SYSDATE()
AIKA (laus.)
TIMEDIFF(laus1;laus2)
TIMESTAMP (laus), TIMESTAMP (laus1, laus2)
TIMESTAMPADD(yksikkö,väli,päivämääräaika_laus.)
TIMESTAMPDIFF(yksikkö,päivämäärä_aika_laus.1,päivämäärä_aika_expr2)
TIME_FORMAT(aika, muoto)
TIME_TO_SEC(aika)
TO_DAYS(päivämäärä)
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(päivämäärä)
UTC_DATE, UTC_DATE()
UTC_TIME, UTC_TIME()
UTC_TIMESTAMP, UTC_TIMESTAMP()
VIIKKO(päivämäärä[,tila])
VIIKONPÄIVÄ(päivämäärä)
VIIKKOVUOSI(päivämäärä)
YEAR(päivämäärä)
YEARWEEK(päivämäärä), YEARWEEK(päivämäärä,tila)
SQL - Oppitunti 13. Päivämäärä- ja aikafunktiot
Nämä toiminnot on suunniteltu toimimaan kalenteritietotyyppien kanssa. Katsotaanpa sopivimpia.
No, siinä kaikki tälle päivälle. Seuraavalla kerralla tarkastelemme toimintoja, jotka auttavat muuttamaan päivämäärät muodosta toiseen.
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:
Jos tallentaisimme toimituspäivän dataaika-tyyppinä, niin NOW()-funktio sopisi meille paremmin.
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:
SECOND - sekuntia
MINUTE - minuuttia
HOUR - tuntia
PÄIVÄ - päivää
VIIKKO - viikkoa
KUUKAUSI - kuukautta
NELJÄNNES - lohkot
YEAR - vuotta
SECOND - sekuntia
MINUTE - minuuttia
HOUR - tuntia
PÄIVÄ - päivää
VIIKKO - viikkoa
KUUKAUSI - kuukautta
NELJÄNNES - lohkot
YEAR - vuotta