SQL Academy · leksjon

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.

Leksjon 2 av 413 trinn

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

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

Tidssone 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?

Gratis å komme i gang

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

  1. Datoberegning og INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Tidssoner: TIMESTAMP kontra TIMESTAMPTZ
  4. Vanlige datarapporter (MTD, WoW, YoY)
← Tilbake til SQL Academy