Zeitraumabfrage mit Timestamp

Flew

Gast
Hallo allerseits!

Folgendes Prob:
mysql-Tabelle mit Spalte "date" (Typ = timestamp -> zb. 2007-02-09 15:40:21). nun erhalte ich per php zwei werte im format yyyymmtt und möchte diese mit der Spalte "date" vegleichen. Der 1. Wert ist das Startdatum, der zweite das Enddatum. Das Resultat soll die Werte in diesem Zeitraum auflisten Nun hab ich das so versucht:

$query = "SELECT DATE_FORMAT(date, '%Y%m%d') as Datum,name FROM kontakt WHERE Datum > '".$startdatum."' AND Datum < '".$enddatum."'";

Leider haut das nicht wirklich hin & ich bekomme eine mysql_query Fehlermeldung...Kann mir jem sagen wie ich dies lösen kann?

Besten Dank & Gruss
 

Flew

Gast
hmm mein ansatz bis zum mittag....

$startdatum = date("Ymd",mktime(0,0,0,intval($_GET["v_monat"]),intval($_GET["v_tag"]),intval($_GET["v_jahr"])));

$enddatum = date("Ymd",mktime(0,0,0,intval($_GET["b_monat"]),intval($_GET["b_tag"]),intval($_GET["b_jahr"])));

$query = "SELECT *,DATE_FORMAT(date, '%Y%m%d') as Datum FROM kontakt WHERE Datum > '".$startdatum."' AND Datum < '".$enddatum."'";
 

PressureDrop

Tokyo Rose
Registriert
07.12.06
Beiträge
68
Entweder normalisierst Du den Timestamp mit DATE(...) oder Du wandelst das Datum mit TIMESTAMP(...) um.
 

Flew

Gast
danke für deine antwort. jo dieser ansatz scheint mir logisch. welchen befehl kann ich dazu verwenden? hab mal umgeschaut und variant_date_to_timestamp gefunden... funktioniert jedoch nicht...Am schönsten wäre es natürlich gleich in der Abfrage:

$query = "SELECT *,DATE_FORMAT(date, '%Y%m%d') as Datum FROM kontakt WHERE Datum >= '".$startdatum."' AND Datum <= '".$enddatum."'";

klarzustellen...

vielleicht hat mir noch wer ein input dazu?

besten dank für eure hilfe!
 

Flew

Gast
habs rausgefunden....kleiner flüchtigkeitsfehler meinerseits der mich nun 3h gekostet hat ;)

-->

$startdatum = date("Ymd",mktime(0,0,0,intval($_GET["v_monat"]),intval($_GET["v_tag"]),intval($_GET["v_jahr"])));
$enddatum = date("Ymd",mktime(0,0,0,intval($_GET["b_monat"]),intval($_GET["b_tag"]),intval($_GET["b_jahr"])));

$query = "SELECT *,DATE_FORMAT(date, '%Y%m%d') as datum FROM kontakt WHERE date >= '".$startdatum."' AND date <= '".$enddatum."'";
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
habs rausgefunden....kleiner flüchtigkeitsfehler meinerseits der mich nun 3h gekostet hat ;)

-->

$startdatum = date("Ymd",mktime(0,0,0,intval($_GET["v_monat"]),intval($_GET["v_tag"]),intval($_GET["v_jahr"])));
$enddatum = date("Ymd",mktime(0,0,0,intval($_GET["b_monat"]),intval($_GET["b_tag"]),intval($_GET["b_jahr"])));

$query = "SELECT *,DATE_FORMAT(date, '%Y%m%d') as datum FROM kontakt WHERE date >= '".$startdatum."' AND date <= '".$enddatum."'";

Alternativ:
Code:
$sql = "
SELECT
  *, 
  DATE_FORMAT(date, '%Y%m%d') AS datum,
  UNIX_TIMESTAMP(date) AS epoch_datum
FROM
  kontakt
WHERE
  date
BETWEEN
  '" . mktime(...) . "' AND '" . mktime(...) . "'
ORDER BY date ASC";
 

Irgendein Held

Oberösterreichischer Brünerling
Registriert
17.06.07
Beiträge
714
Alternativ:
Code:
$sql = "
SELECT
  *, 
  DATE_FORMAT(date, '%Y%m%d') AS datum,
  UNIX_TIMESTAMP(date) AS epoch_datum
FROM
  kontakt
WHERE
  date
BETWEEN
  '" . mktime(...) . "' AND '" . mktime(...) . "'
ORDER BY date ASC";

Da hat einer seine Hausaufgaben gemacht :p (nichts für ungut)

Man kann mehr mit SQL machen als viele annehmen. Spart viel rumgefrickel mit PHP!