Hallo, ich möchte gerne aus meiner Datenbank das Feld a_updatetime abfragen, wenn der Zeitstempel innerhalb der letzten 5 Tage liegt.
Wie kriege ich das hin?
Datenbankfeld sieht so aus:
Feld: a_updatetime
Typ: timestamp
Attribute: ON UPDATE CURRENT_TIMESTAMP
Null: Nein
Standard: CURRENT_TIMESTAMP
Probiert habe ich:
SELECT * FROM tabellenname WHERE TO_DAYS( a_updatetime ) < to_days( current_date ) >-5
Da kommt aber nur Müll raus ...
Hallo,
du bist hier falsch. Hier gehts um PostgreSQL und nicht MySQL => verschoben in andere Datenbanken...
Es kommen eben Daten raus, die nicht den Abfragekriterien entsprechen ...
Es sind Daten dabei, die natürlich auch älter sind als 5 Tage, z.B. von 2009 ...
Dann machst Du wohl was falsch. Angefangen vom DB-System.
Richtig geht es so:
AndreasCode:test=# create table no_mysql( t timestamp); CREATE TABLE test=*# insert into no_mysql values (now() - '1day'::interval); INSERT 0 1 test=*# insert into no_mysql values (now() - '3day'::interval); INSERT 0 1 test=*# insert into no_mysql values (now() - '5day'::interval); INSERT 0 1 test=*# insert into no_mysql values (now() - '8day'::interval); INSERT 0 1 test=*# select * from no_mysql where t > current_date - '5day'::interval; t ---------------------------- 2010-02-16 11:30:55.140489 2010-02-14 11:30:55.140489 2010-02-12 11:30:55.140489 (3 rows)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Hallo
Es läuft mit:
ein (Schönheits-) Problem gibts aber doch noch: Nämlich die Zeit-Darstellung kommt in UK-Zeit und nicht in MEZCode:SELECT * FROM prefbb_adresse WHERE a_updatetime >= DATE_SUB(NOW(),INTERVAL 14 DAY) ORDER BY a_updatetime DESC LIMIT 1000
Ich bekomme dann um 13:40 Uhr Daten von 14:40 angezeigt, was unschön ist.
Wie kann ich die überflüssige Stunde da noch wegnehmen?
Du hast ein anderes Schönheitsproblem: fängt mit M an und endet mit SQL. Dazwischen ist ein y.
AndreasCode:test=# select now() at time zone 'EST'; timezone --------------------------- 2010-02-17 08:08:42.07966 (1 row) test=*# select now() at time zone 'CET'; timezone --------------------------- 2010-02-17 14:08:42.07966 (1 row)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Und vielleicht einen falsch konfigurierten Server, der auf UTC läuft. Aber das ist dann schon fast nebensächlich.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Wie bringe ich die Abfragen
in meinen Code hinein?Code:test=# select now() at time zone 'EST'; timezone --------------------------- 2010-02-17 08:08:42.07966 (1 row) test=*# select now() at time zone 'CET'; timezone --------------------------- 2010-02-17 14:08:42.07966 (1 row)
Indem du PostgreSQL statt MySQL verwendest.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen