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ää”.
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ä aikatyyppiä:
DATE— kalenteripäivä, ei kellonaikaaTIME— kellonaikaTIMESTAMP— 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-31Kahden 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-30CURRENT_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_TIMESTAMPPä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?
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
- Päivämäärälaskenta ja INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- Aikavyöhykkeet: TIMESTAMP vs TIMESTAMPTZ
- Yleiset päivämääräraportit (MTD, WoW, YoY)