SQL Academy · leksjon

Datoberegning og INTERVAL

Legg til og trekk fra datoer med INTERVAL, beregn varigheter, og bygg relative datofiltre som «de siste 7 dagene».

Leksjon 1 av 413 trinn

Datoberegning og INTERVAL er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 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.

Oppsummering av dato- og klokkesletttyper

Fire grunnleggende tidsrelaterte typer i PostgreSQL:

  • DATE — kalenderdag, uten klokkeslett
  • TIME — klokkeslett
  • TIMESTAMP — dato + klokkeslett, uten tidssone
  • TIMESTAMPTZ — dato + klokkeslett + tidssone (anbefales for hendelser)

INTERVAL: Et tidsintervall

INTERVAL er en varighet. Du legger det til eller trekker det fra en dato eller et tidsstempel:

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

Du kan bruke year, month, week, day, hour, minute, second (i entall eller flertall):

SELECT INTERVAL '2 years 6 months';
SELECT INTERVAL '1 week';
SELECT INTERVAL '90 seconds';

Vanlige relative datofiltre

De vanligste spørringene for «de siste N dagene»:

SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '7 days';

SELECT * FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '1 month';

Legge dager til en DATE

PostgreSQL tillater også date + integer som «legg til N dager»:

SELECT DATE '2024-01-01' + 30;     -- 2024-01-31
SELECT DATE '2024-01-01' - 1;      -- 2023-12-31

Trekke fra to tidsstempler

Forskjellen mellom to tidsstempler er et 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: Forskjell i lesbart format

AGE(end, start) returnerer et INTERVAL i år, måneder og dager:

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;

Legge til måneder — vær forsiktig

Å legge til en måned er kalenderaritmetikk. 2024-01-31 + 1 month = 2024-02-29 (forkortet):

SELECT DATE '2024-01-31' + INTERVAL '1 month';   -- 2024-02-29
SELECT DATE '2024-03-31' + INTERVAL '1 month';   -- 2024-04-30

CURRENT_DATE kontra NOW()

Ulike returtyper — velg den som passer:

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_TIMESTAMP

Bygge datoer fra deler

Bygg datoer fra heltallskolonner:

SELECT MAKE_DATE(year, month, day) FROM birthdays;
SELECT MAKE_TIMESTAMP(2024, 3, 15, 14, 30, 0.0);

Indekser på dato-uttrykk

En indeks på created_at håndterer områdespørringer godt. For «hendelser i mars» er et område­­filter raskere enn month-trunc:

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

Oppsummering

Datoaritmetikk i SQL er omfattende og pålitelig.

  • INTERVAL for varigheter
  • Legg til eller trekk fra direkte
  • AGE for lesbare tidsintervaller
  • Halvåpne områder er mest indeksvennlige

Hurtigsjekk

Hvilket uttrykk returnerer hendelser fra de siste 7 dagene?

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 «Datoberegning og INTERVAL» gratis?

Ja – hele teksten i «Datoberegning og INTERVAL» 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 «Datoberegning og INTERVAL»?

Legg til og trekk fra datoer med INTERVAL, beregn varigheter, og bygg relative datofiltre som «de siste 7 dagene». 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 1 av 4.

Hvor lang tid tar leksjonen «Datoberegning og INTERVAL»?

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