MySQL Datum (2005-09-19) in Timestamp umwandeln

Don Stefano

Erfahrenes Mitglied
Hallo zusammen,

leider komme ich trotz all der Threads zum Theme Zeit und Datum nicht dahinter, wie ich nun in meinem Fall ein Datum in Form von "2005-09-19", welches in einer MySql Datenbank steht, in einen Timestamp umwandeln kann um es mit einem aktuellen Datum zu vergleichen.

In der Datenbank-Tabelle stehen optional 2 Datumswerte, welche eine Frist definieren. Der Typ der Felder ist "date". Sofern keine Datumswerte vorhanden sind (was auch sein kann) ist als Standard "NULL" eingetragen.

Ich habe selbst keine Möglichkeit diese Datenbankstruktur zu verändern.

Es geht nun darum zu prüfen, ob das aktuelle Datum innerhalb der Frist liegt (sofern eine angegeben ist). Nur dann geht es weiter, ansonsten soll eine Fehlermeldung ausgegeben werden.

Folgendes habe ich mir dazu überlegt:
PHP:
//Auslesen der Frist 
$result = mysql_query("select l_begin, l_ende from rp_lauf where `l_id`= '".intval($l_id)."'");  

$row = mysql_fetch_object($result);
$l_begin = $row->l_begin;
$l_ende = $row->l_ende;

//sofern eine Frist eingetragen ist beginnt der Vergleich, ansonsten wird er übersprungen
IF (!$l_begin == “Null”) {

//hier müssen nun zuerst $l_begin und $l_ende in Timestamps umgewandelt werden, damit diese mit "time ()" verglichen werden können
//Aber wie geht das nur?

//Dann: Prüfen, ob das aktuelle Datum NICHT innerhalb der Frist liegt
if (!($l_begin <= time() <= $l_ende)) {
echo “Die Frist hat noch nicht begonnen oder ist abgelaufen”; }

} //Ende erstes IF
Ich weiß nun nicht, ob ich hierzu zuerst die beiden Datumswerte in die Einzelteile zerlegen muss (z.B. mit
PHP:
$parts = explode('-', $l_begin);
$parts = explode('-', $l_ende);
um diese dann mit mktime irgendwie in einen Timestamp umzuwandeln.

Oder ob das Ganze irgendwie mit UNIX_TIMESTAMP oder strtotime gelöst werden muss.

Wer kann mir helfen und mitteilen, wie genau diese Umwandlung funktioniert?

Vielen Dank
 
Warum nicht einfach so?
SQL:
UNIX_TIMESTAMP(datumsfeld) AS `datumsfeld`

bzw.
SQL:
"SELECT
    UNIX_TIMESTAMP(l_begin) AS `l_begin`,UNIX_TIMESTAMP(l_ende) AS `l_ende` 
FROM
    rp_lauf 
WHERE
    `l_id`= '".intval($l_id)."'");
 
Zuletzt bearbeitet von einem Moderator:
Das werde ich dann mal ausprobieren. Vielen Dank für die einfache Erklärung.

Ich dachte man müßte das Datum zuvor noch in irgendeine "Standardform" bringen, damit man Unix Timestamp anwenden kann. Offensichtlich steht es dann aber schon in dieser Form in der DB.
 
UNIX_TIMESTAMP verwandelt das gegebene Mysqldatum in einen Timestamp, aber in der Datenbank ist es nicht so gespeichert, also es braucht schon immer Rechenleistung.
 
Zurück