Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. 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