SQL Academy · Oppitunti

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.

Oppitunti 2/413 vaihetta

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'));  -- 3

Kaksiparametrisen 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 orders

Aikavyö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?

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 ”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

  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