• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

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!