selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

Programmlogik für Datum in MySQL oder PHP

Autor: FelixF
Datum: 18.01.2013 09:55:48

Ich grüße euch,

ich suche eine Programmlogik in MySQL oder auch mit PHP, mit der ich überprüfen kann, ob sich ein Datum in einem bestimmten Bereich befindet.

Als kongretes Beispiel:

1. Datum - 01.02.2013

2. Datum - 01.03.2013

Jetzt gibt es zwei neue Datums und ich möchte überprüfen, ob es eine Schnittmenge gibt bzw. ich möchte ein wahr haben, wenn es keine Schnittmenge gibt.

Mein beiden neuen Datums:
1. Datum - 02.01.2013
2. Datum - 03.02.2013
==> false, 2. Datum überschneidet um 2 Tage

1. Datum 02.02.2013
2. Datum 05.03.2013
==> false, das 1. Datum liegt im ursprünglichen Bereich

1. Datum 02.02.2013
2. Datum 04.02.2013
==> false, die Spanne liegt im ursprünglichen Bereich

1. Datum 01.01.2013
2. Datum 03.01.2013
==> TRUE, die Spanne liegt außerhalb

1. Datum 01.05.2013
2. Datum 02.05.2013
==> TRUE, die Spanne liegt außerhalb.

Mit PHP könnte ich in mehreren Bedingungen überprüfen, ob sich das Datum schneidet. Meine Frage ist, ob es mit SQL eine "einfacherer" Möglichkeit für so etwas gibt oder ob es in PHP eine Art "fertigen" Algorithmus bereits implementiert ist?
Das Datum wird als Type date gespeichert.

Für Idee und Anregungen bin ich sehr dankbar.

Grüße Felix



Re: Programmlogik für Datum in MySQL oder PHP

Autor: gaby
Datum: 20.01.2013 10:03:43

> Ich grüße euch,

ich dich auch ;-)


> ich suche eine Programmlogik in MySQL oder auch
> mit PHP, mit der ich überprüfen kann, ob sich ein
> Datum in einem bestimmten Bereich befindet.
>
> Als kongretes Beispiel:
>
> 1. Datum - 01.02.2013
>
> 2. Datum - 01.03.2013
>
> Jetzt gibt es zwei neue Datums und ich möchte
> überprüfen, ob es eine Schnittmenge gibt bzw. ich
> möchte ein wahr haben, wenn es keine Schnittmenge
> gibt.
>
> Mein beiden neuen Datums:
> 1. Datum - 02.01.2013
> 2. Datum - 03.02.2013
> ==> false, 2. Datum überschneidet um 2 Tage

> 1. Datum 01.05.2013
> 2. Datum 02.05.2013
> ==> TRUE, die Spanne liegt außerhalb.
>
> Mit PHP könnte ich in mehreren Bedingungen
> überprüfen, ob sich das Datum schneidet.

Das wären ja nur die 2 Abfragen, ob das erste neue Datum kleiner ist, als das erste vorgegebene Datum, und ob das zweite neue Datum größer ist, als das zweite vorgegebene Datum. Mir ist jetzt nichts bekannst, was man da noch verkürzen oder optimieren könnte.


> Meine Frage ist, ob es mit SQL eine "einfacherer"
> Möglichkeit für so etwas gibt oder ob es in PHP
> eine Art "fertigen" Algorithmus bereits
> implementiert ist?

Dann poste doch bitte mal, wie du es jetzt hast.
Erst dann kann man beurteilen, ob es auch einfacher geht.


Grüße
gaby



Re: Programmlogik für Datum in MySQL oder PHP

Autor: FelixF
Datum: 21.01.2013 08:54:31

> Das wären ja nur die 2 Abfragen, ob das erste
> neue Datum kleiner ist, als das erste vorgegebene
> Datum, und ob das zweite neue Datum größer ist,
> als das zweite vorgegebene Datum. Mir ist jetzt
> nichts bekannst, was man da noch verkürzen oder
> optimieren könnte.

Nicht ganz, wenn ich dich richtig verstanden habe, dann würde deine Bedingung nur ein wahr ergeben, wenn das gesuchte Datum das gegeben umschließt.

> Dann poste doch bitte mal, wie du es jetzt hast.
> Erst dann kann man beurteilen, ob es auch
> einfacher geht.

Kann ich gerne machen, allerdings habe ich ihn jetzt schon angepasst. Der entscheidende Hinweis kam von dir :)

<?php
//Gegebenes Datum
$gegstart = strtotime('2013-01-20');
$gegende = strtotime('2013-01-25');

//Gesuchtes Datum
$gesstart = strtotime('2013-01-18');
$gesende = strtotime('2013-01-19');

//Ende muss größer gleich Anfang sein
if($gesende >= $gesstart)
{
    //$gesende muss vor $gegstart
    //$gesstart muss nach $gesende
    if($gesende < $gegstart || $gesstart > $gegende)
    {
        echo date('d.m.Y',$gesende) .' - '. date('d.m.Y',$gegstart);
        echo '<br />';
        echo date('d.m.Y',$gesstart) .' - '. date('d.m.Y',$gegende);
    }
    else
    {
        echo 'Datum liegt im gegeben Bereich';
    }
}
else
{
    echo 'Datumsende liegt vor -anfang.';
}

?>

Mein Fehler war vorher, dass ich die Überprüfung, ob die Datumsspanne überhaupt sinnvoll ist, in jede einzelne Überprüfung einbauen wollte und somit kam ich auf insgesamt 4 unnötige Bedingungen.

Grüße Felix