2016-06-14 17 views
0

Wie vergleichen Sie nur das Zeitelement einer TIMESTAMP-Spalte in Redshift? Der nächste Weg, den ich fand, ist EXTRACT mehrere Male für die HOUR, MINUTE und SECOND Elemente zu verwenden und sie zusammenzufügen, aber es scheint ineffizient. Ich habe auch eine plpythonu UDF berücksichtigt.Effiziente Methode zum Zeitvergleich in Redshift

Vielen Dank im Voraus.

+0

in postgres wäre es 'postgres = # wählen Sie jetzt() :: timestamp :: time - '2001.09.01 09:00' :: timestamp :: time as diff; diff ------------------ -00: 50: 56.267417 (1 Zeile) ' –

+0

@VaoTsun Leider funktioniert es nicht in Redshift. Ich erhalte den folgenden Fehler: FEHLER: 0A000: Angegebene Typen oder Funktionen (eine pro INFO-Nachricht) nicht in Redshift-Tabellen unterstützt. – gilibi

+0

http://docs.aws.amazon.com/redshift/latest/dg/c_unsupported-postgresql-datatypes.html - ja - einfach lesen –

Antwort

0

Schließlich schrieb ich eine einfache UDF in plpythonu spezifischen Bedarf gerecht zu werden:

CREATE OR FUNCTION compare_time REPLACE (timestamp1_ TIMESTAMP, timestamp2_ TIMESTAMP) RETURNS UNVERÄNDERLICH AS $$ import datetime

Start boolean = datetime.time (timestamp1 x h, timestamp1_.minute, timestamp1_.second) end = datetime.time (timestamp2 x h, timestamp2_.minute, timestamp2_.second)

wenn _start < = _end: return true return false

$$ SPRACHE plpythonu;

Verwandte Themen