MySQL + Abfrage: Daten nicht älter als ...

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 …

Du bist hier im Postgres-Forum. Rate mal, was du gleich für Kommentare bekommst :wink:

Im Ernst: Was für Müll kommt denn raus?

CU WotW

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:

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)

Andreas

Hallo
Es läuft mit:

SELECT * FROM prefbb_adresse WHERE a_updatetime >= DATE_SUB(NOW(),INTERVAL 14 DAY) ORDER BY a_updatetime DESC LIMIT 1000

ein (Schönheits-) Problem gibts aber doch noch: Nämlich die Zeit-Darstellung kommt in UK-Zeit und nicht in MEZ
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.

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)

Andreas

Und vielleicht einen falsch konfigurierten Server, der auf UTC läuft. Aber das ist dann schon fast nebensächlich.

Wie bringe ich die Abfragen

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)

in meinen Code hinein?

Indem du PostgreSQL statt MySQL verwendest.

Hast Du noch immer nicht geschnallt, daß Du im komplett falschen Forum bist? Hier geht es um PostgreSQL, nicht um MySQL.

Du hast die Entscheidung zwischen “Wechsel zu PostgreSQL” und “Wechsel in ein MySQL-Forum”. Entscheide Dich.

Andreas