SQL Academy · Oppitunti

Päivämäärälaskenta ja INTERVAL

Lisätkää päivämääriin ja vähentäkää niistä INTERVAL-arvoja, laskekaa kestoja ja rakentakaa suhteellisia päivämääräsuodattimia, kuten ”viimeiset 7 päivää”.

Oppitunti 1/413 vaihetta

Päivämäärälaskenta ja INTERVAL on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Päivämäärä- ja aikatyypit: kertaus

PostgreSQL:n neljä keskeistä aikatyyp​piä:

  • DATE — kalenteripäivä, ei kellonaikaa
  • TIME — kellonaika
  • TIMESTAMP — päivämäärä + kellonaika, ei aikavyöhykettä
  • TIMESTAMPTZ — päivämäärä + kellonaika + aikavyöhyke (suositeltava tapahtumille)

INTERVAL: aikaväli

INTERVAL on kesto. Se lisätään päivämäärään tai aikaleimaan tai vähennetään siitä:

SELECT NOW() + INTERVAL '1 day';
SELECT NOW() - INTERVAL '30 days';
SELECT NOW() + INTERVAL '3 months 2 weeks';
SELECT INTERVAL '1 hour' + INTERVAL '15 minutes';

INTERVAL-yksiköt

Voit käyttää yksiköitä year, month, week, day, hour, minute, second (yksikkö- tai monikkomuodossa):

SELECT INTERVAL '2 years 6 months';
SELECT INTERVAL '1 week';
SELECT INTERVAL '90 seconds';

Yleiset suhteelliset päivämääräsuodattimet

Perustavanlaatuiset ”viimeiset N päivää” -kyselyt:

SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '7 days';

SELECT * FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '1 month';

Päivien lisääminen DATE-arvoon

PostgreSQL sallii myös muodon date + integer, joka tarkoittaa ”lisää N päivää”:

SELECT DATE '2024-01-01' + 30;     -- 2024-01-31
SELECT DATE '2024-01-01' - 1;      -- 2023-12-31

Kahden aikaleiman vähentäminen

Kahden aikaleiman erotus on INTERVAL:

SELECT NOW() - '2024-01-01'::TIMESTAMP;
-- → '125 days 14:30:00'

SELECT EXTRACT(EPOCH FROM (NOW() - created_at))/3600 AS hours_ago
FROM events;

AGE: helposti ymmärrettävä erotus

AGE(end, start) palauttaa vuosien, kuukausien ja päivien muodostaman INTERVAL-arvon:

SELECT AGE(NOW(), birth_date) AS age_interval
FROM users WHERE id = 1;

SELECT EXTRACT(YEAR FROM AGE(birth_date)) AS age_in_years
FROM users;

Kuukausien lisääminen — huomioitavaa

Kuukauden lisääminen perustuu kalenteriaritmetiikkaan. 2024-01-31 + 1 month = 2024-02-29 (päivä rajataan kuukauden viimeiseen päivään):

SELECT DATE '2024-01-31' + INTERVAL '1 month';   -- 2024-02-29
SELECT DATE '2024-03-31' + INTERVAL '1 month';   -- 2024-04-30

CURRENT_DATE vs NOW()

Palautustyypit ovat erilaiset — valitse tilanteeseen sopiva:

SELECT CURRENT_DATE;        -- 2024-03-15 (DATE)
SELECT CURRENT_TIME;        -- 14:30:00+02 (TIMETZ)
SELECT CURRENT_TIMESTAMP;   -- 2024-03-15 14:30:00+02 (TIMESTAMPTZ)
SELECT NOW();               -- alias for CURRENT_TIMESTAMP

Päivämäärien muodostaminen osista

Muodosta päivämäärät kokonaislukusarakkeista:

SELECT MAKE_DATE(year, month, day) FROM birthdays;
SELECT MAKE_TIMESTAMP(2024, 3, 15, 14, 30, 0.0);

Päivämäärälausekkeiden indeksit

created_at-sarakkeen indeksi käsittelee aluekyselyt tehokkaasti. Maaliskuun tapahtumien hakemiseen alue-ehto on nopeampi kuin kuukauden katkaiseminen:

-- Index-friendly:
WHERE created_at >= '2024-03-01' AND created_at < '2024-04-01';

-- Less friendly (works only with expression index):
WHERE date_trunc('month', created_at) = '2024-03-01';

Kertaus

SQL:n päivämääräaritmetiikka on monipuolista ja luotettavaa.

  • INTERVAL kestoille
  • Suora yhteen- ja vähennyslasku
  • AGE helposti ymmärrettäville aikaväleille
  • Puoliavoimet alueet ovat indeksien kannalta tehokkaimpia

Pikatesti

Mikä lauseke palauttaa viimeisten seitsemän päivän tapahtumat?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”Päivämäärälaskenta ja INTERVAL” ilmainen?

Kyllä – oppitunnin ”Päivämäärälaskenta ja INTERVAL” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Päivämäärälaskenta ja INTERVAL”?

Lisätkää päivämääriin ja vähentäkää niistä INTERVAL-arvoja, laskekaa kestoja ja rakentakaa suhteellisia päivämääräsuodattimia, kuten ”viimeiset 7 päivää”. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Päivämäärälaskenta ja INTERVAL”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Päivämäärälaskenta ja INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Aikavyöhykkeet: TIMESTAMP vs TIMESTAMPTZ
  4. Yleiset päivämääräraportit (MTD, WoW, YoY)
← Takaisin: SQL Academy