MySql Datumintervall berechnen

sylvia85

Grünschnabel
Hallihallo... :-)

ich pack das nicht alleine... zu blöd... :-(

Folgendes:

ich habe eine Dantenbank die so ausieht:

TABLEX:
[Von]-------------------[Bis]--------- [Aktion] ------------------[Intervall]
2006-01-01......2099-01-01......Auto waschen............Alle 28 Tage
2006-04-06......2099-01-01......Wasser trinken..........Alle 1 Tage (jeden Tag)
2006-02-10......2006-04-01......Schuhe kaufen :-) ......Alle 7 tage

[Von], [Bis] geben die Gültigkeitsdauer einer Aktion an!

jetzt brauche ich eine SQL abfrage die jeden Tag das Datum abfragt:

1. ist es innerhalb des Von Bis und
2. ist das Intervall korrekt und
3. gibt dann die Daten aus.

das kriege ich noch hin:

Select * From Tablex where von <= '2006-05-03' and bis >= '2006-05-03'

2006-05-03 ist z.B. der aktuelle Tag

aber wie frage ich per SQL ab ob der aktuelle Tag unter Berücksichtigung des Intervalles passt ?

Geht das überhaupt mit MySQL ?

Hier die Resultate die ich gerne hätte:

----------------------------------
Suchdatum ist "2006-01-29"

Resultat:

2006-01-01 2099-01-01 Wash Car every 28 Days
2006-04-06 2099-01-01 Drink Water Every 1 Days (every day)
-----------------------------------

Suchdatum ist "2006-02-17"

Resultat:

2006-04-06 2099-01-01 Drink Water Every 1 Days (every day)
2006-02-10 2006-04-01 Buy Shoes every 7 Days
-----------------------

Suchdatum ist "2006-02-26"

Resultat:

2006-01-01 2099-01-01 Wash Car every 28 Days
2006-04-06 2099-01-01 Drink Water Every 1 Days (every day)
--------------------------------
usw.
-----------------------

Hoffe es kann mich jemand in die richtige Richtung schubsen, dankeee.... :-)
 
Das aktuelle Datum kannst du mit der Funktion Now() bestimmen.
Dann must die Query nur so schreiben.
Code:
SELECT * FRom tabelle Where von < NOW() AND bis > NOW();
Vielleicht solltest du dir auch mal den Vergleichsoperator between anschauen.
 
Hi ronaldo84.. :)

Danke für die Antwort....

Die von Dir beschriebene SELECT Anweisung ist mir schon klar... das Problem ist wie frage ich denn jetzt ab ob das Suchdatum zum [von] Datum + Intervall passt...

z.B.:

Select * from TabeleX where >> [Von]+[Intervall] = HeutigesDatum <<<

für "2006-05-01......2007-01-01......Schuhe kaufen ......Alle 7 tage" gilt also:

Select * from TabeleX where [22006-05-01]+[Alle 7 tage] = 2006-05-05 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-06 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-07 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-07 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-08 ergibt "Schuhe kaufen"
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-09 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-10 ergibt keine Daten
.
.
.
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-15 ergibt "Schuhe kaufen"
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-16 ergibt keine Daten
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-17ergibt keine Daten
.
.
.
Select * from TabeleX where [2006-05-01]+[Alle 7 tage] = 2006-05-22 ergibt "Schuhe kaufen"

usw.

Die Abfrage stimmt natürlich nicht, aber so soll das irgendwie funktionieren...

Irgendeine Idee ? :)








Das würde ja fürs 1. mal klappen,
 
Hallo,

zunächst müßtest du das Interval in numerischer Form abspeichern (also 1,2,3,4... (jeweils Tage)). Wenn das geschehen ist, kannst du dein Problem auch lösen.

PHP:
SELECT * FROM `tab` 
WHERE NOW() BETWEEN `Von` AND `Bis` 
AND MOD(TO_DAYS(NOW()) - TO_DAYS(`Von`), `Interval`) = 0

Sollte ansich funktionieren. NOW() kannst du natürlich durch ein beliebiges Datum ersetzen.

Bloddy
 
Hallo, bloddy newbie... ;)

Ich glaube das ist es ! Ich nehm das mal auseinander (Newbie) um zu lernen und probiers mal die Woche aus... vielen, vielen Dank... :-) ;) :-) ;)
 
Zurück