phpbar.de logo

Mailinglisten-Archive

Lösung gesucht: DATE_ADD INTERVAL 1 MONTH

Lösung gesucht: DATE_ADD INTERVAL 1 MONTH

Andreas Kuzma akuzma at gmx.at
Fre Jan 6 17:30:12 CET 2006


Hallo alle beisammen!

Da ich das erste mal poste möchte ich mich ganz kurz vorstellen: Ich heiße
Andreas, bin 28 und in Wien zu Hause. Ich programmiere hobbymäßig  PHP/MySQL
und komme recht gut zurecht damit.

Jetzt habe ich aber ein Problem, bei dem ich hoffe, dass Ihr mir helfen
könnt. Darum geht's:

Ich programmiere gerade in PHP eine "Teaserverwaltung" für eine
Internet-Startseite. Ein "Teaser" besteht aus einem icon-großen
Bildchen mit einem Text daneben und einem Link. Alle Teaser können
zeitgesteuert sein und tauchen dann jeweils bei Abruf entweder auf
oder nicht - gemäß des SELECT Statements. Soweit so gut.

Jetzt gibt es auch Teaser die z.B. jedes Jahr wiederkommen sollen
oder jede Woche. Dazu wird jeder Teaser, der abgelaufen ist folgendermaßen
"upgedatet":

UPDATE news_teaser_objects SET start = DATE_ADD(start, INTERVAL 1
YEAR), expiry = DATE_ADD(expiry, INTERVAL 1 YEAR) WHERE scheduled =
'y' AND expiry < NOW();

scheduled zeigt an, ob und in welcher Form der Teaser nach Ablauf
wiedereingestellt werden soll. 'y' bedeutet z.B. jährlich und 'm' monatlich.

Das funktioniert auch einwandfrei. Jetzt zum Problem: Wenn ein Teaser
monatlich wiederkommen soll und expiry z.B. der 31.01. war, wird
expiry durch folgendes Statement

UPDATE news_teaser_objects SET start = DATE_ADD(start, INTERVAL 1
MONTH), expiry = DATE_ADD(expiry, INTERVAL 1 MONTH) WHERE scheduled =
'm' AND expiry < NOW();

auf den 28.02. gesetzt, einen 31.02. gibts ja nicht. Wenn der Teaser
nächsten Monat dann aber wieder ein Monat weiterrutschen soll ist das
Enddatum aber nicht der 31.03. sondern der 28.03., also falsch.

Ich kriege irgendwie kein funktionierendes SQL-Statement zusammen,
das das Problem behebt. Das Datum im Feld soll auch nicht ungültig
sein (also nicht mit Gewalt auf z.B. 31.02. gesetzt). Ich dachte
schon daran in einer zusätzlichen Spalte den gewünschten Tag des
Monats mitzuspeichern und das damit irgendwie zu korrigieren, aber
bisher hab ichs nicht geschafft.

Wär super wenn Ihr mir da helfen könntet!

Viele Grüße,
Andreas Kuzma

-- 
Telefonieren Sie schon oder sparen Sie noch?
NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive