2017-12-16 2 views
0

Ich habe ein Problem mit der Zeitkonvertierung.Redshift CONVERT_TIMEZONE Problem

Immer wenn ich versuchte, die Zeit zu Timestamp zu ändern. Es funktioniert nicht. Ich habe viele Funktionen aus http://docs.amazonaws.cn/en_us/redshift/latest/dg/Date_functions_header.html

versucht, aber immer noch eine einzige Funktion hat die Datum Uhrzeit nicht in Zeitstempel konvertieren. Ein z. Ich brauche Datum (2017-12-11 23:38:11) als Zeitstempel (1513036800) Format.

Können Sie mir bitte die genaue Funktion, um das zu konvertieren?

Auch ich habe versucht, CONVERT_TIMEZONE Funktion zu verwenden. Es funktioniert gut, wenn ich das statische Datum innerhalb dieser wie geben: CONVERT_TIMEZONE('GMT','GMT -1','2017-12-11 23:38:11')

Aber wenn ich das Datum mit meinem Variablennamen ändern, erhalte ich eine Fehlermeldung:

"ERROR: function convert_timezone("unknown", "unknown", character varying) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts."

  • Can you guys Sag mir Funktion um das Datum in Timestamp zu konvertieren?
  • Können Sie mir den Grund für den oben genannten Fehler beim Übergeben der dynamischen Variable sagen?
  • Ich möchte Zeitzone und Datum zusammen hinzufügen und dann, um den Zeitstempel Wert davon zu bekommen, ist das möglich?
  • Dateadd-Funktion gibt den gleichen Fehler beim Übergeben der dynamischen Variable.

Antwort

0

Pro Fehlermeldung sieht es so aus, als wäre Ihr Zeitstempel in einer Varchar-Spalte gespeichert. Sie müssen die Spalte ändern, um den Wert im Zeitverlauf zu timestamp oder konvertieren, um Timestamp-Funktionen verwenden zu können. Ich schlage das erste vor, weil es eine bessere Leistung hat. Redshift unterstützt keine Änderung des Spaltendatentyps. Dazu müssen Sie die Tabelle DDL mit dem Datentyp timestamp für Zeitspalten neu erstellen, Daten in die neue Tabelle einfügen und die alte Tabelle durch sie ersetzen.

Wie für die dynamische Umwandlung, ist es wie folgt aus:

EXTRACT('epoch' FROM CONVERT_TIMEZONE('GMT','GMT -1',your_column::timestamp)) 

Sie gerade brauchen nicht ::timestamp Teil zu verwenden, wenn Sie die Spalte

+0

Hallo Alex konvertieren, Vielen Dank für Hilfe. Ja, es funktioniert jetzt einwandfrei, ohne den Spaltendatentyp zu ändern. Können Sie mir über den Grund der Verwendung "-1" Zeitzone sagen. Es arbeitet gerade jetzt. Ich möchte es als "+1" verwenden, um die genaue Zeit zu erhalten. Wie wenn Sie überprüfen, wählen Sie pg_timezone_names(); Funktion. "GMT -1" konvertiert die Zeit um eine Stunde in Plus hinzuzufügen. - Gibt es einen bestimmten Grund dafür? Irgendwelche Hilfe! Ich freue mich wieder auf Sie! Danke & Grüße –

+0

Bitte ans wenn Sie können https://stackoverflow.com/questions/47868132/redshift-extract-function-issue –

+0

@PankajKumar Offsets arbeiten in negativer Weise – AlexYes