PostgreSQL - Einen Datumsbereich filtern

8

Ich bin ein SQL-Entwickler und verbringe die meiste Zeit in MSSQL. Ich suche nach einer besseren Möglichkeit, ein "Timestamp ohne Zeitzone" -Feld in einer PostGreSQL-DB

zu filtern

Ich benutze:

%Vor%

Aber da ich kein Experte in der Syntax bin, muss ich denken, dass es einen besseren Weg gibt.

Vorschläge? Danke.

    
Rob S 04.04.2013, 17:31
quelle

2 Antworten

17

Ihre Lösung ist in Ordnung. Wenn die Daten Literale sind, würde ich jedoch bevorzugen:

%Vor%

Dies funktioniert genau so, ist aber wartungsfreundlicher, weil es den Punkt jedes literalen "Datums" klarstellt, der ein Zeitstempel und kein Datum ist. Angenommen, jemand ändert beispielsweise Ihre Abfrage in das folgende

%Vor%

... erwartet (und scheitert), den ganzen Tag "2012-01-01" in die Abfrage aufzunehmen. Mit der späteren Syntax wird die Absicht klarer und diese Verwirrung wird verhindert.

Um es noch deutlicher zu machen (vielleicht zu ausführlich), können Sie die explizite Umwandlung durchführen:

%Vor%

Ich würde to_date() hier nicht aus ähnlichen Gründen (mögliche Datentypverwechslung) verwenden, noch to_timestamp() (es gibt timestamptz zurück).

Übrigens, ich habe den Fall so geändert, dass er der empfohlenen Praxis entspricht (Schlüsselwörter in Großbuchstaben, Kennungen in Kleinbuchstaben)

    
leonbloy 04.04.2013, 19:14
quelle
4

Für Datumsintervalle können Sie Folgendes verwenden:

%Vor%

Es ist kürzer (Sie müssen DateField nicht wiederholen) und hat ein explizites Datumsformat.

Für 1 Stunde / Tag / Monat / Jahr können Sie verwenden:

%Vor%     
Igor Romanchenko 04.04.2013 17:46
quelle

Tags und Links