[Postgres] String als Datumswert auslesen

Die wilde Inge

Commander
Registriert
Aug. 2009
Beiträge
2.071
Hallöchen,

ich habe mal folgendes Problem. Ich benutze ein Programm mit einer DB im Hintergrund. Das Programm läuft auch auf Linux und dort wird statt Oracle/MSSQL eine Postgres DB angebunden.
Ich bringe aus einer Log-Datei per RegEx automatisiert einen Datums-String in die Datenbank.

Ich möchte den jetzt gerne als Datumswert abfragen, nicht als String.

Mit einer MSSQL DB im Hintergrund klappt das auch:

Code:
SELECT Distinct  Devices.DeviceName         
FROM Devices          
INNER JOIN  CustInv_ObjType_6125 RemoteLog ON Devices.DeviceID=RemoteLog.DeviceID          
WHERE   (   (RemoteLog.ATTR_597203 LIKE N'%%')      
AND  ((CONVERT(datetime,RemoteLog.ATTR_597205) < DATEADD(week, -1,GetUTCDate()) )) 
AND  (RemoteLog.ATTR_597207 LIKE N'%%')     
AND (Devices.DeviceName LIKE N'%%')          )            
ORDER BY Devices.DeviceName ASC

Ich kriege den Gerätenamen und alle Datumswerte die nicht älter als 1 Tag sind.

Wenn man das gleiche aber probiert während eine Postgres DB angebunden ist, funktioniert das hier so nicht mehr.
Ich kriege dann den "FEHLER: Spalte »datetime« existiert nicht".

Hat irgendwer ne Idee wie man das hier auf Postgres ummünzt? Ich will das Rad nicht neu erfinden.

Bin dankbar für jeden Tipp.
 
E-tech schrieb:
Passt das für dich? https://www.postgresql.org/docs/8.2/functions-formatting.html

Die Time-Funktionen sind je nach DB Anbieter etwas anders.

Bitte kleine Verlinkung zu steinzeitlichen Versionen (aus dem Jahr 2006). Aktuell ist die v12 (vom 03.10.2019).

Hier der Link zu den aktuellen String Umwandlungsfunktionen:
https://www.postgresql.org/docs/current/functions-formatting.html

Hier die Datumsfunktionen:
https://www.postgresql.org/docs/current/functions-datetime.html

Hier die Datentypen:
https://www.postgresql.org/docs/current/datatype.html
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Ich hatte zwischendurch eine Woche Urlaub und kam nicht dazu zu antworten.
Ich sehe hier ehrlich gesagt überhaupt kein Land. Vielleicht kann mir ja noch mal jemand helfen. Leider finden sich auch nur ganz wenig Beispiele und alles ist eher oberflächlich gehalten.

Bei MSSQL habe ich das wie folgt gelöst:
....
AND ((CONVERT(datetime,RemoteLog.ATTR_597205) < DATEADD(week, -1,GetUTCDate()) ))
....

wenn ich nun TO_DATE((RemoteLog.ATTR_597203, 'YYYY/MM/DD')) mache, habe ich damit ja bisher noch nichts gekonnt, die Bedingung, dass das Datum innerhalb der letzten Woche liegen muss, ist hier ja noch nicht dabei.

Da es DATEADD bei Postgres nicht zu geben scheint, stehe ich jetzt vor der nächsten Hürde - ich will ja nur die Daten der letzten Woche.

Kann mir noch mal jemand helfen?

Danke!
Ergänzung ()

ich habe das große Talent immer genau dann die Lösung zu finden, nachdem ich um Hilfe gebeten habe.

Die Lösung lautet: AND (TO_DATE(RemoteLog.ATTR_597205, 'YYYY/MM/DD') >= NOW() - interval '7 days')
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben