EXTRACT, DATE_TRUNC, AGE
Hent ut deler av en dato med EXTRACT, rund tidsstempler av til en grense med DATE_TRUNC, og beregn lettleste forskjeller med AGE.
EXTRACT, DATE_TRUNC, AGE er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
EXTRACT: Hente ut en datodel
EXTRACT(part FROM ts) returnerer én numerisk komponent:
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;Vanlige EXTRACT-deler
Nyttige deler: 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: Avrunde til en grense
DATE_TRUNC(unit, ts) setter alt under enheten til null — den mest nyttige funksjonen for grupperte rapporter:
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());Grupperte rapporter
Månedlig inntekt med date_trunc:
SELECT date_trunc('month', created_at) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;Hittil i år / hittil i måneden
Sammenlign gjeldende periode med samme tidspunkt i fjor:
-- 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: Kalenderbevisst forskjell
AGE returnerer år + måneder + dager, ikke bare dager:
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')); -- 3AGE med to argumenter
AGE med ett argument sammenligner med current_date:
SELECT AGE(birth_date) FROM users LIMIT 5;Logikk for ukedager
EXTRACT(DOW): 0=søndag … 6=lørdag. ISO_DOW: 1=mandag … 7=søndag.
SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7); -- weekend ordersTidssone i EXTRACT
EXTRACT på TIMESTAMPTZ bruker øktens tidssone. Bruk AT TIME ZONE for å styre den:
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;Avrunde etter et egendefinert intervall
For intervaller som ikke følger kalenderen (hvert 5. minutt), bruker du aritmetikk:
SELECT to_timestamp(
floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;Funksjonelle indekser for avrunding
Hvis du ofte bruker GROUP BY date_trunc('day', created_at), kan en funksjonell indeks hjelpe:
CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));Oppsummering
EXTRACT + DATE_TRUNC + AGE dekker de fleste rapporteringsbehov.
- EXTRACT for individuelle deler
- DATE_TRUNC for å avrunde til en grense
- AGE for kalenderbevisste tidsintervaller
Hurtigsjekk
Du vil telle nye brukere per måned. Hvilken funksjon grupperer datoer etter måned?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «EXTRACT, DATE_TRUNC, AGE» gratis?
Ja – hele teksten i «EXTRACT, DATE_TRUNC, AGE» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «EXTRACT, DATE_TRUNC, AGE»?
Hent ut deler av en dato med EXTRACT, rund tidsstempler av til en grense med DATE_TRUNC, og beregn lettleste forskjeller med AGE. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «EXTRACT, DATE_TRUNC, AGE»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Datoberegning og INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- Tidssoner: TIMESTAMP kontra TIMESTAMPTZ
- Vanlige datarapporter (MTD, WoW, YoY)