![]() |
|
Kalenterin Aika/Päivämäärä-toiminnot.Kalenterin aika/päivämäärä -toiminnot käsittelevät tietoa päivämäärän, kellonajan ja aikaleiman tietotyypeissä. (Aikaleiman tietotyyppi on päivämäärän ja kellonajan yhdistelmä.) Kaikki päivämäärätoiminnot noudattavat ISO 8601 -standardia. Tämä vaikuttaa erityisesti sellaisiin toimintoihin kuin Week_Of_Year ja Week_Of_Quarter, joissa vuoden ensimmäinen viikko on ensimmäinen kokonainen viikko, johon sisältyy yksi torstai. Lisätietoja päivämäärätoimintojen laskennasta on ISO 8601 -standardissa. Current_DatePalauttaa senhetkisen päivämäärän. Järjestelmä käyttää tietokoneen päivämäärää. Arvoon ei sisälly kellonaikaa. Syntaksi: CURRENT_DATE Current_TimePalauttaa senhetkisen kellonajan. Järjestelmä käyttää tietokoneen kellonaikaa. Arvo ei sisällä päivämääräosaa. Huomautus: Tämä toiminto käyttää raportin ajon aikaa. Toiminnon käyttö analyysien aihealueessa estää raporttien tallennuksen välimuistiin, mikä heikentää suorituskykyä. Syntaksi: CURRENT_TIME (n) jossa:
Current_TimeStampPalauttaa senhetkisen aikaleiman. Järjestelmä käyttää tietokoneen aikaleimaa. Huomautus: Tämä toiminto käyttää raportin ajon aikaa. Toiminnon käyttö analyysien aihealueessa estää raporttien tallennuksen välimuistiin, mikä heikentää suorituskykyä. Syntaksi: CURRENT_TIMESTAMP (n) jossa:
Day_Of_QuarterPalauttaa annettua päivämäärää vuosineljänneksen päivänä vastaavan luvun (välillä 1-92). Syntaksi: DAY_OF_QUARTER (date_expression) jossa:
DayNamePalauttaa annettua päivämäärää vastaavan viikonpäivän (englanniksi). Syntaksi: DAYNAME (date_expression) jossa:
DayOfMonthPalauttaa annettua päivämäärää kuukauden päivänä vastaavan luvun. Syntaksi: DAYOFMONTH (date_expression) jossa:
DayOfWeekPalauttaa luvun välillä 1–7. Tämä luku vastaa annetun päivämäärän viikonpäivää. Luku 1 vastaa sunnuntaita ja luku 7 lauantaita. Syntaksi: DAYOFWEEK (date_expression) jossa:
DayOfYearPalauttaa annettua päivämäärää vuoden päivänä vastaavan luvun (välillä 1 - 366). Syntaksi: DAYOFYEAR (date_expression) jossa:
HourPalauttaa annetun kellonajan tuntia vastaavan luvun (välillä 0 - 23). Luku 0 vastaa keskiyötä ja luku 23 kellonaikaa 23. Syntaksi: HOUR (time_expression) jossa:
MinutePalauttaa annetun kellonajan minuutteja vastaavan luvun (välillä 0 - 59). Syntaksi: MINUTE (time_expression) jossa:
MonthPalauttaa annetun päivämäärän kuukautta vastaavan luvun (välillä 1 - 12). Syntaksi: MONTH (date_expression) jossa:
Month_Of_QuarterPalauttaa annetun päivämäärän kuukautta vuosineljänneksen kuukautena vastaavan luvun (välillä 1 - 3). Syntaksi: MONTH_OF_QUARTER (date_expression) jossa:
MonthNamePalauttaa annetun päivämäärän kuukauden nimen (englanniksi). Syntaksi: MONTHNAME (date_expression) jossa:
NowPalauttaa senhetkisen aikaleiman. NOW-toiminto on sama kuin CURRENT_TIMESTAMP-toiminto. Huomautus: Tämä toiminto käyttää raportin ajon aikaa. Toiminnon käyttö analyysien aihealueessa estää raporttien tallennuksen välimuistiin, mikä heikentää suorituskykyä. Syntaksi: NOW () Quarter_Of_YearPalauttaa annetun päivämäärän vuosineljännestä vastaavan luvun (välillä 1 - 4). Syntaksi: QUARTER_OF_YEAR (date_expression) jossa:
SecondPalauttaa annetun kellonajan sekunteja vastaavan luvun (välillä 0 - 59). Syntaksi: SECOND (time_expression) jossa:
TimestampAddTimestampAdd-toiminto liittää tietyn määrän aikayksikköjä annettuun aikaleimaan. Toiminto palauttaa yhden aikaleiman. Syntaksi: TimestampAdd (interval, integer_expression, timestamp_expression) jossa:
Mikäli syötteeksi annetaan tyhjä kokonaisluku-ilmaus tai tyhjä aikaleima-ilmaus, saadaan tyhjä palautusarvo. Yksinkertaisimmassa tapauksessa tämä toiminto vain lisää annetun kokonaislukuarvon (integer_expression) aikaleiman oikeaan osaan (määräytyy annetun ajanjakson perusteella). Viikon lisäys tarkoittaa seitsemän päivän lisäystä ja vuosineljänneksen lisäys kolmen kuukauden lisäystä. Mikäli annettu kokonaislukuarvo on negatiivinen, arvo vähennetään aikaleiman oikeasta osasta (jolloin liikutaan ajassa taaksepäin). Mikäli kyseiseen aikaleiman osaan näyttäisi olevan tulossa liian suuri luku (yli 60 sekuntia, yli 24 tuntia, yli 12 kuukautta jne), lisätään sopiva luku seuraavaan osaan. Kun aikaleimaan lisätään esimerkiksi päiviä, toiminto ottaa ylimenevää osaa käsitellessään huomioon kyseisen kuukauden päivien lukumäärän (myös karkausvuodet, jolloin helmikuussa on 29 päivää). Kun aikaleimaan lisätään kuukausia, toiminto tarkistaa, että tuloksena saatavan aikaleiman päivää kuvaavassa osiossa on oikea luku. Jos esimerkiksi päivämäärään 31-05-2000 lisätään 1 kuukausi, tuloksena ei ole 31-6-2000, koska kesäkuussa ei ole 31 päivää. Toiminto muuttaa päivän kuukauden viimeiseksi päiväksi, tässä tapauksessa 30-6-2000. Samantapainen ongelma muodostuu, kun lisätään vuosia aikaleimaan, jonka kuukausi on helmikuu ja päivä 29 (toisin sanoen karkausvuoden helmikuun viimeinen päivä). Ellei tuloksena saatava aikaleima osu karkausvuodelle, toiminto muuttaa päiväosan luvuksi 28. Seuraavassa esimerkkejä TimestampAdd-toiminnon käytöstä: Seuraavassa esimerkkikoodissa pyydetään lisäämään 3 päivää aikaleimaan 27-02-2000 14:30:00. Koska 2000 on karkausvuosi, palautetaan aikaleima 01-03-2000 14:30:00. TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP‘2000-02-27 14:30:00’) Seuraavassa esimerkkikoodissa pyydetään lisäämään 7 kuukautta aikaleimaan 31-07-1999 0:0:0. Tuloksena on aikaleima 29-02-2000 00:00:00. Huomaa, että päiväosa vähenee luvuksi 29, koska helmikuu on lyhyempi kuukausi. TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP‘1999-07-31 00:00:00’) Seuraavassa esimerkkikoodissa pyydetään lisäämään 25 minuuttia aikaleimaan 31-07-2000 23:35:00. Tuloksena on aikaleima 01-08-2000 00:00:00. Huomaa, että ylimenevä osa käsitellään muuttamalla kuukautta kuvaavaa osaa. TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP‘2000-07-31 23:35:00’) TimeStampDiffTimeStampDiff -toiminto palauttaa annettujen aikayksiköiden määrän kahden aikaleiman välillä. Syntaksi: TimestampDiff (interval, timestamp_expression1, timestamp_expression2) jossa:
Mikäli syötteenä on tyhjä aikaleima-ilmaus, myös palautusarvo on tyhjä. Toiminto määrittää ensin, mikä aikaleiman osa vastaa annettua aikayksikköä. Esimerkiksi SQL_TSI_DAY vastaa päivää kuvaavaa osaa ja SQL_TSI_MONTH vastaa kuukautta kuvaavaa osaa. Seuraavaksi toiminto laskee suurempien aikayksiköiden perusteella, kuinka monta annettua aikayksikköä kussakin aikaleimassa on. Jos annettu aikayksikkö on esimerkiksi kuukausi, toiminto laskee kummankin aikaleiman kuukausien kokonaismäärän laskemalla yhteen vuosia kuvaavan osan kerrottuna kahdellatoista ja kuukausia kuvaavan osan. Lopulta toiminto vähentää ensimmäisen aikaleiman aikayksiköiden kokonaismäärän toisen aikaleiman aikayksiköiden kokonaismäärästä. Laskiessaan erotusta päivissä toiminto katkaisee molemmista aikaleimalausekkeista saadut aika-arvot ja vähentää sitten päivämääräarvot. Laskiessaan erotusta viikoissa toiminto laskee ensin erotuksen päivissä ja jakaa seitsemällä ennen pyöristystä. Laskiessaan erotusta vuosineljänneksissä toiminto laskee ensin erotuksen kuukausissa ja jakaa kolmella ennen pyöristystä. Laskiessaan erotusta vuosissa toiminto laskee ensin erotuksen kuukausissa ja jakaa kahdellatoista ennen pyöristystä. Seuraavassa esimerkkejä TimestampDiff-toiminnon käytöstä ja palautusarvoista:Seuraavassa esimerkkikoodissa pyydetään aikaleimojen 31-07-1998 23:35:00 ja 01-04-2000 14:24:00 välistä erotusta päivissä. Se palauttaa arvon 610. Huomaa, että mukaan tulee yksi päivä lisää, koska vuosi 2000 on karkausvuosi. TimestampDIFF(SQL_TSI_DAY, TIMESTAMP‘1998-07-31 23:35:00’, TIMESTAMP‘2000-04-01 14:24:00’) Week_Of_QuarterPalauttaa luvun (välillä 1 - 13), joka vastaa sitä, monesko kuluvan vuosineljänneksen viikko annettuna päivämääränä on. Syntaksi: MONTH_OF_QUARTER (date_expression) jossa:
Week_Of_YearPalauttaa luvun (välillä 1 - 53), joka vastaa sitä, monesko kuluvan vuoden viikko annettuna päivämääränä on. Syntaksi: WEEK_OF_YEAR (date_expression) jossa:
VuosiPalauttaa annetun päivämäärän vuosiluvun. Syntaksi: YEAR (date_expression) jossa:
Esimerkki: YEAR (CURRENT_DATE) |
Julkaistu Syyskuu 2017 | Copyright © 2005, 2017, Oracle ja/tai sen tytär-, sisar- tai osakkuusyhtiöt. Kaikki oikeudet pidätetään. Legal Notices. |