EXTRACT, DATE_TRUNC, AGE
Poimikaa päivämäärän osia EXTRACT-funktiolla, kohdistakaa aikaleimat raja-arvoon DATE_TRUNC-funktiolla ja laskekaa helppolukuisia eroja AGE-funktiolla.
EXTRACT, DATE_TRUNC, AGE on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.
EXTRACT: päivämäärän osan poimiminen
EXTRACT(part FROM ts) palauttaa yhden numeerisen osan:
SELECT EXTRACT(YEAR FROM created_at) AS yr,
EXTRACT(MONTH FROM created_at) AS mo,
EXTRACT(DAY FROM created_at) AS d,
EXTRACT(DOW FROM created_at) AS day_of_week
FROM orders;Yleiset EXTRACT-osat
Hyödyllisiä osia ovat: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DOW (0=Sun), DOY (1–366), WEEK, QUARTER, EPOCH.
SELECT EXTRACT(EPOCH FROM (NOW() - created_at)) AS seconds_ago
FROM events;DATE_TRUNC: kohdistaminen rajaan
DATE_TRUNC(unit, ts) nollaa kaikki yksikön alapuoliset osat — se on hyödyllisin funktio ryhmiteltyihin raportteihin:
SELECT date_trunc('day', NOW()); -- 2024-03-15 00:00:00
SELECT date_trunc('week', NOW());
SELECT date_trunc('month', NOW());
SELECT date_trunc('hour', NOW());Ryhmitellyt raportit
Kuukausittainen liikevaihto date_trunc-funktion avulla:
SELECT date_trunc('month', created_at) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;Vuoden alusta / kuukauden alusta
Vertaa nykyistä ajanjaksoa viime vuoden samaan ajankohtaan:
-- This month so far
SELECT SUM(total) FROM orders
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';AGE: kalenterin huomioiva erotus
AGE palauttaa vuodet, kuukaudet ja päivät, ei pelkkiä päiviä:
SELECT AGE('2024-03-15', '2020-12-01');
-- → '3 years 3 months 14 days'
SELECT EXTRACT(YEAR FROM AGE('2024-03-15', '2020-12-01')); -- 3Kaksiparametrisen AGEn toiminta
Yksiparametrinen AGE vertaa arvoa current_date-arvoon:
SELECT AGE(birth_date) FROM users LIMIT 5;Viikonpäivälogiikka
EXTRACT(DOW): 0=sunnuntai … 6=lauantai. ISO_DOW: 1=maanantai … 7=sunnuntai.
SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7); -- weekend ordersAikavyöhyke EXTRACT-funktiossa
TIMESTAMPTZ-arvosta tehtävä EXTRACT käyttää istunnon aikavyöhykettä. Voit hallita sitä käyttämällä AT TIME ZONE -lausetta:
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'UTC') FROM events;
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'Europe/Berlin') FROM events;Katkaiseminen mukautetun aikavälin mukaan
Kun aikaväli ei noudata kalenteria, esimerkiksi viiden minuutin jaksot, käytä aritmetiikkaa:
SELECT to_timestamp(
floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;Katkaisemisen funktionaaliset indeksit
Jos ryhmittelet usein lausekkeella date_trunc('day', created_at), funktionaalinen indeksi auttaa:
CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));Kertaus
EXTRACT, DATE_TRUNC ja AGE kattavat useimmat raportointitarpeet.
- EXTRACT yksittäisten osien poimimiseen
- DATE_TRUNC rajaan kohdistamiseen
- AGE kalenterin huomioiviin aikaväleihin
Pikatesti
Haluat laskea uudet käyttäjät kuukausittain. Millä funktiolla päivämäärät ryhmitellään kuukausittain?
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 ”EXTRACT, DATE_TRUNC, AGE” ilmainen?
Kyllä – oppitunnin ”EXTRACT, DATE_TRUNC, AGE” 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 ”EXTRACT, DATE_TRUNC, AGE”?
Poimikaa päivämäärän osia EXTRACT-funktiolla, kohdistakaa aikaleimat raja-arvoon DATE_TRUNC-funktiolla ja laskekaa helppolukuisia eroja AGE-funktiolla. 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 2/4.
Kuinka kauan ”EXTRACT, DATE_TRUNC, AGE”-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)