Datumsteile für Datums- oder Zeitstempelfunktionen - Amazon Redshift

Datumsteile für Datums- oder Zeitstempelfunktionen

Die folgende Tabelle identifiziert die Namen und Abkürzungen von Datumsteilen und Uhrzeitteilen, die als Argumente für die folgenden Funktionen verwendet werden können:

  • DATEADD

  • DATEDIFF

  • DATE_PART

  • EXTRACT

Datumsteil oder Uhrzeitteil Abkürzungen
millennium, millennia mil, mils
century, centuries c, cent, cents
decade, decades dec, decs
Epoche epoch (unterstützt von EXTRACT)
year, years y, yr, yrs
quarter, quarters qtr, qtrs
month, months mon, mons
week, weeks

w

day of week

dayofweek, dow, dw, weekday (unterstützt von DATE_PART und Funktion EXTRACT)

Gibt eine Ganzzahl von 0–6 aus, beginnend mit Sonntag.

Anmerkung

Der Datumsteil DOW verhält sich anders als der Datumsteil „Wochentag (D)“ für Datumsteilformatzeichenfolgen. D basiert auf den Ganzzahlen 1–7, wobei die 1 für den Sonntag steht. Weitere Informationen finden Sie unter Datum-/Uhrzeit-Formatzeichenfolgen.

day of year dayofyear, doy, dy, yearday (unterstützt von 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 Unterstützt von EXTRACT nur für Zeitstempel mit Zeitzone (TIMESTAMPTZ).

Abweichungen bei den Ergebnissen mit Sekunden, Millisekunden und Mikrosekunden

Kleinere Differenzen treten auf, wenn verschiedene Datumsfunktionen Sekunden, Millisekunden oder Mikrosekunden als Datumsteile angeben:

  • Die Funktion EXTRACT gibt nur für den angegebenen Datumsteilen Ganzzahlen aus, wobei Datumsteile auf höheren und niedrigeren Ebenen ignoriert werden. Wenn der angegebene Datumsteil „Sekunden“ ist, werden Millisekunden und Mikrosekunden in dem Ergebnis nicht berücksichtigt. Wenn der angegebene Datumsteil „Millisekunden“ ist, werden Sekunden und Mikrosekunden in dem Ergebnis nicht berücksichtigt. Wenn der angegebene Datumsteil „Mikrosekunden“ ist, werden Sekunden und Millisekunden in dem Ergebnis nicht berücksichtigt.

  • Die Funktion DATE_PART gibt den vollständigen Sekundenteil des Zeitstempels aus, unabhängig davon, welcher Datumsteil angegeben wurde; dabei wird je nach Bedarf entweder eine Dezimal- oder eine Ganzzahl ausgegeben.

Vergleichen Sie beispielsweise die Ergebnisse der folgenden Abfragen:

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 (1 row) select date_part(sec, micro) from seconds; pgdate_part ------------- 3.189717 (1 row)

Anmerkungen zu CENTURY, EPOCH, DECADE und MIL

CENTURY oder CENTURIES

Amazon Redshift lässt ein CENTURY mit dem Jahr ###1 beginnen und mit dem Jahr ###0 enden:

select extract (century from timestamp '2000-12-16 12:21:13'); date_part ----------- 20 (1 row) select extract (century from timestamp '2001-12-16 12:21:13'); date_part ----------- 21 (1 row)
EPOCH

Die Amazon-Redshift-Implementierung von EPOCH ist relativ zu 1970-01-01 00:00:00.000000, unabhängig von der Zeitzone, in der sich das Cluster befindet. Möglicherweise müssen Sie die Ergebnisse um die Differenz in Stunden verschieben, je nach der Zeitzone, in der sich das Cluster befindet.

Das folgende Beispiel veranschaulicht die folgenden Schritte:

  1. Erstellt eine Tabelle mit der Bezeichnung EVENT_EXAMPLE auf der Grundlage der Tabelle EVENT. Dieser CREATE AS-Befehl verwendet die Funktion DATE_PART zur Erstellung einer Datumsspalte (mit der standardmäßigen Bezeichnung PGDATE_PART) zur Speicherung des Epochenwerts für jedes Ereignis.

  2. Wählt die Spalte und den Datentyp von EVENT_EXAMPLE aus PG_TABLE_DEF aus.

  3. Wählt EVENTNAME, STARTTIME und PGDATE_PART aus der Tabelle EVENT_EXAMPLE aus, um die verschiedenen Datums- und Uhrzeitformate anzuzeigen.

  4. Wählt EVENTNAME und STARTTIME aus EVENT EXAMPLE aus. Konvertiert Epochenwerte in PGDATE_PART unter Verwendung eines Intervall von 1 Sekunde zu einem Zeitstempel ohne Zeitzone und gibt die Ergebnisse in einer Spalte mit der Bezeichnung CONVERTED_TIMESTAMP aus.

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 oder DECADES

Amazon Redshift interpretiert DECADE oder DECADES DATEPART auf der Grundlage des gewöhnlichen Kalenders. Zum Beispiel: Da der gewöhnliche Kalender mit dem Jahr 1 beginnt, ist die erste Dekade (Dekade 1) 0001-01-01 bis 0009-12-31, und die zweite Dekade (Dekade 2) ist 0010-01-01 bis 0019-12-31. Beispielsweise reicht Dekade 201 von 2000-01-01 bis 2009-12-31:

select extract(decade from timestamp '1999-02-16 20:38:40'); date_part ----------- 200 (1 row) select extract(decade from timestamp '2000-02-16 20:38:40'); date_part ----------- 201 (1 row) select extract(decade from timestamp '2010-02-16 20:38:40'); date_part ----------- 202 (1 row)
MIL oder MILS

Amazon Redshift interpretiert ein MIL mit dem Beginn am ersten Tag des Jahres #001 und dem Ende am letzten Tag des Jahres #000:

select extract (mil from timestamp '2000-12-16 12:21:13'); date_part ----------- 2 (1 row) select extract (mil from timestamp '2001-12-16 12:21:13'); date_part ----------- 3 (1 row)