• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

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!