• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Zeitraumabfrage mit Timestamp

  • Ersteller Ersteller Flew
  • Erstellt am Erstellt am

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
 
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."'";
 
Entweder normalisierst Du den Timestamp mit DATE(...) oder Du wandelst das Datum mit TIMESTAMP(...) um.
 
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!
 
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."'";
 
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";
 
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!