Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Parti di data per funzioni di data e timestamp
La tabella seguente identifica i nomi e le abbreviazioni di parti di data e parti di ora accettati come argomenti per le seguenti funzioni:
-
DATEADD
-
DATEDIFF
-
DATE_PART
-
EXTRACT
| Parte data o parte ora | Abbreviazioni |
|---|---|
| millennium, millennia | mil, mils |
| century, centuries | c, cent, cents |
| decade, decades | dec, decs |
| epoch | epoca (supportato da EXTRACT) |
| year, years | y, yr, yrs |
| quarter, quarters | qtr, qtrs |
| month, months | mon, mons |
| week, weeks | w |
| day of week |
dayofweek, dow, dw, weekday (supportate da DATE_PART e Funzione EXTRACT) Restituisce un intero compreso tra 0 e 6, a partire da domenica. NotaLa parte di data DOW si comporta in modo diverso rispetto alla parte di data day of week (D) utilizzata per stringhe in formato datetime. D si basa su numeri interi 1-7, dove domenica è 1. Per ulteriori informazioni, consultare Stringhe di formato datetime. |
| day of year | dayofyear, doy, dy, yearday (supportato da EXTRACT) |
| day, days | d |
| hour, hours | h, hr, hrs |
| minute, minutes | m, min, mins |
| second, seconds | s, sec, secs |
| millisecond, milliseconds | ms, msec, msecs, msecond, mseconds, millisec, millisecs, millisecon |
| microsecond, microseconds | microsec, microsecs, microsecond, usecond, useconds, us, usec, usecs |
| timezone, timezone_hour, timezone_minute | Supportato da EXTRACT solo per il timestamp con fuso orario (TIMESTAMPTZ). |
Variazioni nei risultati con secondi, millisecondi e microsecondi
Differenze minori nei risultati delle query si hanno quando funzioni di data differenti specificano secondi, millisecondi o microsecondi come parti di data:
-
La funzione EXTRACT restituisce interi solo per la parte di data specificata, ignorando parti di dati di livello superiore e inferiore. Se la parte di data specificata è secondi, millisecondi e microsecondi non sono inclusi nel risultato. Se la parte di data specificata è millisecondi, secondi e microsecondi non sono inclusi nel risultato. Se la parte di data specificata è microsecondi, secondi e millisecondi non sono inclusi nel risultato.
-
La funzione DATE_PART restituisce la parte di secondi completa del timestamp, indipendentemente dalla parte di data specificata, restituendo un valore decimale o un intero in base alle necessità.
Ad esempio, confronta i risultati delle seguenti query:
create table seconds(micro timestamp); insert into seconds values('2009-09-21 11:10:03.189717'); select extract(sec from micro) from seconds;date_part ----------- 3select date_part(sec, micro) from seconds;pgdate_part ------------- 3.189717
Note su CENTURY, EPOCH, DECADE e MIL
- CENTURY o CENTURIES
-
Amazon Redshift interpreta CENTURY con inizio nell'anno ###1 e fine nell'anno
###0:select extract (century from timestamp '2000-12-16 12:21:13');date_part ----------- 20select extract (century from timestamp '2001-12-16 12:21:13');date_part ----------- 21 - EPOCA
-
L'implementazione di EPOCH in Amazon Redshift è relativa a 1970-01-01 00:00:00.000000 indipendentemente del fuso orario in cui si trova il cluster. È possibile che sia necessario compensare i risultati della differenza in ore a seconda del fuso orario in cui si trova il cluster.
L'esempio seguente mostra quanto segue:
-
Crea una tabella denominata EVENT_EXAMPLE in funzione della tabella EVENT. Questo comando CREATE AS utilizza la funzione DATE_PART per creare una colonna data (denominata PGDATE_PART per impostazione predefinita) e archiviare il valore epoch per ogni evento.
-
Seleziona la colonna e il tipo di dati di EVENT_EXAMPLE da PG_TABLE_DEF.
-
Seleziona EVENTNAME, STARTTIME e PGDATE_PART dalla tabella EVENT_EXAMPLE per visualizzare i differenti formati di data e ora.
-
Seleziona EVENTNAME e STARTTIME da EVENT EXAMPLE così com'è. Converte i valori epoch in PGDATE_PART utilizzando un intervallo di un secondo per un timestamp senza fuso orario e restituisce i risultati in una colonna denominata CONVERTED_TIMESTAMP.
create table event_example as select eventname, starttime, date_part(epoch, starttime) from event; select "column", type from pg_table_def where tablename='event_example';column | type ---------------+----------------------------- eventname | character varying(200) starttime | timestamp without time zone pgdate_part | double precision (3 rows)select eventname, starttime, pgdate_part from event_example;eventname | starttime | pgdate_part ----------------------+---------------------+------------- Mamma Mia! | 2008-01-01 20:00:00 | 1199217600 Spring Awakening | 2008-01-01 15:00:00 | 1199199600 Nas | 2008-01-01 14:30:00 | 1199197800 Hannah Montana | 2008-01-01 19:30:00 | 1199215800 K.D. Lang | 2008-01-01 15:00:00 | 1199199600 Spamalot | 2008-01-02 20:00:00 | 1199304000 Macbeth | 2008-01-02 15:00:00 | 1199286000 The Cherry Orchard | 2008-01-02 14:30:00 | 1199284200 Macbeth | 2008-01-02 19:30:00 | 1199302200 Demi Lovato | 2008-01-02 19:30:00 | 1199302200select eventname, starttime, timestamp with time zone 'epoch' + pgdate_part * interval '1 second' AS converted_timestamp from event_example;eventname | starttime | converted_timestamp ----------------------+---------------------+--------------------- Mamma Mia! | 2008-01-01 20:00:00 | 2008-01-01 20:00:00 Spring Awakening | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Nas | 2008-01-01 14:30:00 | 2008-01-01 14:30:00 Hannah Montana | 2008-01-01 19:30:00 | 2008-01-01 19:30:00 K.D. Lang | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Spamalot | 2008-01-02 20:00:00 | 2008-01-02 20:00:00 Macbeth | 2008-01-02 15:00:00 | 2008-01-02 15:00:00 The Cherry Orchard | 2008-01-02 14:30:00 | 2008-01-02 14:30:00 Macbeth | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 Demi Lovato | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 ... -
- DECADE o DECADES
-
Amazon Redshift interpreta DECADE o DECADES DATEPART in base al calendario comune. Ad esempio, poiché il calendario comune inizia dall'anno 1, il primo decennio (decennio 1) va da 0001-01-01 a 0009-12-31 e il secondo decennio (decennio 2) va da 0010-01-01 a 0019-12-31. Ad esempio, il decennio 201 va da 2000-01-01 a 2009-12-31:
select extract(decade from timestamp '1999-02-16 20:38:40');date_part ----------- 200select extract(decade from timestamp '2000-02-16 20:38:40');date_part ----------- 201select extract(decade from timestamp '2010-02-16 20:38:40');date_part ----------- 202 - MIL o MILS
-
Amazon Redshift interpreta MIL con inizio il primo giorno dell'anno #001 e fine l'ultimo giorno dell'anno
#000:select extract (mil from timestamp '2000-12-16 12:21:13');date_part ----------- 2select extract (mil from timestamp '2001-12-16 12:21:13');date_part ----------- 3