2016-07-30 4 views
0

Mit Cron Job versuche ich 30dexpf Feld auf 1 zu aktualisieren, wenn das Ablaufdatum genau 30 Tage weit vom aktuellen Datum ist. Sonst soll der 30dexpf 0 haben, aber keinen Erfolg.aktualisieren und wählen Sie in einer Abfrage in Mysql mit Cron-Job

$query="UPDATE user_pages SET 30dexpf=1 WHERE expiry > CURRENT_DATE - INTERVAL 30 DAY"; 

und ich habe auch versucht, diese aber keinen Erfolg

$query="update user_pages 30dexpf = 
(case when expiry > CURRENT_DATE - INTERVAL 30 DAY then 1 else 0 end)"; 

hier ist meine db Struktur

| user_id | 30dexpf |  expiry  | 

| 7 | 0  | 2016-08-30 11:27:56 | 
+0

Und der Beispiel-Datensatz sollte aktualisiert werden, weil es mehr als 30 Tage ab jetzt ist? –

+0

es Update-Flag auf 1, aber wenn ich Änderungen im Datum, um es immer noch die gleichen Ergebnisse 2016-09-30 11:27:56, diesmal 60 Tage 2 Monate noch, aber immer noch Flag = 1 –

Antwort

1

ich vermutete Sie 30dexpf Feld 1 wenn das Ablaufdatum ist genau 30 Tage weit vom aktuellen Datum aktualisieren möchten. Ansonsten soll die 30dexpf0 haben.

UPDATE user_pages 
SET `30dexpf` = CASE 
       WHEN (
        DATE(expiry) = CURDATE() + INTERVAL 30 DAY 
       ) THEN 1 ELSE 0 END; 
+0

funktioniert nicht in beiden Fällen, wenn die Bedingung wahr oder falsch ist –

+0

Könnten Sie bitte erklären ** "nicht funktioniert" **? – 1000111

+0

** Entschuldigung! ** 30 Tage von heute ('2016-07-30') ist '2016-08-29' nicht' 2016-08-30'. Das ist Juli. Der Juli hat 31 Tage. – 1000111

0

Sie müssen "<" (kleiner als) Ablauf (A) müssen weniger als das aktuelle Datum (B) abgelaufen sein, oder?

aber ich möchte mehr Tipps

Das Add update und select Abfrage Verwendung derselben where-Klausel - Sie die Ergebnismenge abfragen können und sehen, ob es die richtige ist oder nicht, dann die genaue Kopie where-Klausel die update Anweisung

(kann ich nicht kommentieren Jurgen d's Antwort noch so hier statt poste ich)

+0

Ich muss Flag = 1 30 Tage vor Ablaufdatum –

+0

Dann verwenden Sie 'where Ablauf = aktuelles_Datum + Intervall 30 Tage' – gonatee

Verwandte Themen