SQL Dojo Beta
Trappola

Prima converti, poi tronca

Tagliare un orario UTC in giorni, ore o mesi dà giorni UTC: converti prima nel fuso orario di chi legge.

ts AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York' dà l'ora locale; solo dopo CAST(… AS DATE), date_trunc o EXTRACT(HOUR …), e scrivi anche il filtro sulle date in ora locale. Non tutti i giorni durano 24 ore: il giorno in cui si torna all'ora solare ne dura 25, quello in cui si passa all'ora legale 23. Memorizza in UTC, riporta nel fuso orario di chi legge, e dichiara quale.

WITH events(occurred_at) AS (VALUES (TIMESTAMP '2026-06-02 02:30:00'), (TIMESTAMP '2026-06-02 14:00:00'))
SELECT occurred_at,
       CAST(occurred_at AS DATE) AS utc_day,
       CAST(occurred_at AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York' AS DATE) AS new_york_day
FROM events
ORDER BY occurred_at;
occurred_atutc_daynew_york_day
2026-06-02 02:30:002026-06-022026-06-01
2026-06-02 14:00:002026-06-022026-06-02
Provalo in Randori