Parti di data per funzioni di data e timestamp - Amazon Redshift

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.

Nota

La 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 ----------- 3 select 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 ----------- 20 select 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:

  1. 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.

  2. Seleziona la colonna e il tipo di dati di EVENT_EXAMPLE da PG_TABLE_DEF.

  3. Seleziona EVENTNAME, STARTTIME e PGDATE_PART dalla tabella EVENT_EXAMPLE per visualizzare i differenti formati di data e ora.

  4. 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 | 1199302200 select 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 ----------- 200 select extract(decade from timestamp '2000-02-16 20:38:40'); date_part ----------- 201 select 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 ----------- 2 select extract (mil from timestamp '2001-12-16 12:21:13'); date_part ----------- 3