[gelöst] SQL Datumsfeld Select/Update

Hey, ich verzweifle gerade mal wieder bei meinem MYSQL Statement. SELECT Anweisung: [code] SELECT active FROM s_articles WHERE changetime

So ging es bei mir: UPDATE `s_articles` SET `active`=0 WHERE `changetime` = '2011-09-27 15:46:04'Edit: Sorry nicht richtig gelesen! Neue Idee, die Zeit in Unix umwandeln: SELECT UNIX\_TIMESTAMP(`changetime`) AS changetime\_unix FROM `s_articles` WHERE changetime \< '2011-10-05 10:32:58' Vielleicht geht es dann besser.

Zum verzweifeln: SELECT (funktioniert): SELECT count(\*) FROM `s_articles` WHERE changetime \< CAST('20111005141924' AS DATETIME) UPDATE (funktioniert nicht) [quote] UPDATE s_articles SET active=0 WHERE changetime < CAST(‘20111005141924’ AS DATETIME) [/quote] Woran liegt das?

Was willst du denn mit der Query genau erreichen? Wenn du z.B. alle Artikel auf inaktiv setzen möchtest, die in den letzten 30 Tagen nicht bearbeiten worden sind, könntest du das wie folgt machen: UPDATE s_articles SET active=0 WHERE changetime < DATE_SUB(now(),INTERVAL 30 DAY) Analog dazu, kannst du mit DATE_SUB und INTERVAL auch andere, erweiterte Szenarien abbilden. Was z.B. auch geht UPDATE s_articles SET active=0 WHERE TO_DAYS(changetime) < TO_DAYS(‘Y-m-d H:i:s’) oder: $timestamp = strtotime(‘Y-m-d H:i:s’); UPDATE s_articles SET active=0 WHERE UNIX_TIMESTAMP(changetime) < $timestamp;

Problem war, dass die Datensätze schon 0 in der Spalte active stehen hatten. Daher kam als Ergebnis 0 Treffer :slight_smile: Zur Info: Über das ERP kommen in einem Intervall (10min. glaube ich) Bestandsdaten in einer Liste. Diese wird über die API die betroffen Artikel aktualisieren, alle Artikel welche nicht in der Liste sind, sind nicht verfügbar und sollen auf inactive gesetzte werden. Daher das Update Statement kleiner dem Script-Startdatum :slight_smile: