XML Problem
cromafi
- xml
0 Rouven0 Frank (no reg)
Hallo in meiner Datenbank habe ich Datumsanzeigen drin im Timestamp Format.
Nun erstelle ich ein XML-File per PHP.
Der SQL Befehl sieht so aus:
$query = $db->dbquery("SELECT * FROM XYZ WHERE daten like '%$timestamp_heute%'");
und $timestamp_heute ist dies:
$datum_heute = date("d.m.Y");
$timestamp_heute = mktime($datum_heute);
Jedoch bringt er mir nichts heraus OBWOHL in der DB etwas vorhanden ist..???!!!
danke und gruss
Hello,
$query = $db->dbquery("SELECT * FROM XYZ WHERE daten like '%$timestamp_heute%'");
du speicherst deinen Timestamp in einer Textspalte? Ernsthaft? Zumindest fällt mir sonst keine sinnvolle Verwendung von LIKE ein. Falls ja, dann ist das ein grober Datenmodellierungsfehler, das wird dir früher oder später das Genick brechen.
Ansonsten, wie lautet denn dein fertiges Statement (ohne die PHP-Variable), daraus lässt sich u.U. mehr ableiten.
MfG
Rouven
Hello,
$query = $db->dbquery("SELECT * FROM XYZ WHERE daten like '%$timestamp_heute%'");
du speicherst deinen Timestamp in einer Textspalte? Ernsthaft? Zumindest fällt mir sonst keine sinnvolle Verwendung von LIKE ein. Falls ja, dann ist das ein grober Datenmodellierungsfehler, das wird dir früher oder später das Genick brechen.Ansonsten, wie lautet denn dein fertiges Statement (ohne die PHP-Variable), daraus lässt sich u.U. mehr ableiten.
MfG
Rouven
Nein ist nicht in einer Textspalte, keine Sorge ;-)
Z.B.
SELECT * FROM XYZ WHERE datum = '1189116000';
Hallo,
in meinen Augen ist es auch ein Modellierungsfehler, UNIX-Timestamps statt Datumswerte zu verwenden.
Nein ist nicht in einer Textspalte, keine Sorge ;-)
SELECT * FROM XYZ WHERE datum = '1189116000';
welches Datenbankmanagementsystem? (vermutlich MySQL)
welche Version?
welcher Spaltentyp?
Freundliche Grüße
Vinzenz
Hallo,
in meinen Augen ist es auch ein Modellierungsfehler, UNIX-Timestamps statt Datumswerte zu verwenden.
Nein ist nicht in einer Textspalte, keine Sorge ;-)
SELECT * FROM XYZ WHERE datum = '1189116000';welches Datenbankmanagementsystem? (vermutlich MySQL)
welche Version?
welcher Spaltentyp?Freundliche Grüße
Vinzenz
mysql 2.6.4-pl2
ist tatsächlich "text" spaltentyp..
das hat mein vorgänger so eingestellt....
Nun das ganze System ist nun so aufgebaut und ich muss die timestamps verwenden..!
Vorab: Bitte zitiere nur das, worauf sich Deine Antwort bezieht. Das erleichtert das Lesen ungemein.
mysql 2.6.4-pl2
Ähm, das ist die Version von phpMyAdmin. Auf der Startseite der Software findest Du die MySQL-Version, die auf dem Server läuft.
ist tatsächlich "text" spaltentyp..
Schlecht, das solltest Du umstellen.
Nun das ganze System ist nun so aufgebaut und ich muss die timestamps verwenden..!
Debugge Dein Script. Welchen Wert hat $timestamp_heute, wie sehen die Werte in der DB aus? Hast Du beachtet, dass ein Unix-Timestamp bis zur Sekunde genau ist? Damit gehören zu einem Tagesdatum insgesamt 86.400 verschiedene Zeitstempel. Eventuell hilft Dir STRCMP() weiter.
Siechfred
Debugge Dein Script. Welchen Wert hat $timestamp_heute, wie sehen die Werte in der DB aus? Hast Du beachtet, dass ein Unix-Timestamp bis zur Sekunde genau ist? Damit gehören zu einem Tagesdatum insgesamt 86.400 verschiedene Zeitstempel. Eventuell hilft Dir STRCMP() weiter.
Sorry wegen dem Zitieren:
Also Beispiel in der DB eines Timestamp:
Habe folgende Zahlen drin: 1189116000
Nun mein PHP Code:
$datum_heute = date("d.m.Y");
$timestamp_heute = mktime($datum_heute);
und der SQL Syntax sucht nach dem "$timestamp_heute".
Somit wird klar das ich genau nur das brauche: Tag.Datum.Jahr
Somit wird klar das ich genau nur das brauche: Tag.Datum.Jahr
Dann wende FROM_UNIXTIME und ggf. DATE_FORMAT auf den Spaltenwert an, z.B. so:
SELECT
spalten
FROM
tabelle
WHERE
DATE_FORMAT(FROM_UNIXTIME(datumsspalte), '%Y%m%d') = 20071128
Das wirft alle Datensätze aus, deren Timestamp zum 28.11.2007 passt. Wenn Du in PHP sowas schreibst wie
$datum = date("Ymd");
kannst Du das Ergebnis problemlos in Deine Abfrage einbauen, wie oben beschrieben.
Siechfred
Somit wird klar das ich genau nur das brauche: Tag.Datum.Jahr
Dann wende FROM_UNIXTIME und ggf. DATE_FORMAT auf den Spaltenwert an, z.B. so:
SELECT
spalten
FROM
tabelle
WHERE
DATE_FORMAT(FROM_UNIXTIME(datumsspalte), '%Y%m%d') = 20071128
Danke für die Antwort..
Ich habe es nun herausgefunden jedoch stimmt bei mir der SQL Syntax nicht
das wäre die Variable:
~~~php
$heute = mktime(0, 0, 0, date("m") , date("d"), date("Y"));
SQL:
SELECT * FROM pi_inserate WHERE daten = '$heute'
Doch er bringt mir nicht alle Einträge.. Das Problem liegt halt daran das ich eig. die Daten von Heute, Gester und Vorgestern brauche.
Hast du dafür eine Lösung?
Das Problem liegt halt daran das ich eig. die Daten von Heute, Gester und Vorgestern brauche.
*seufz* und damit rückst Du erst jetzt heraus.
Hast du dafür eine Lösung?
Schau Dir die Einleitung zu den Datums- und Zeitfunktionen an, da wird das mit DATE_SUB und INTERVAL gelöst, die Erklärung zu den Funktionen folgt dann weiter unten auf der verlinkten Seite.
Siechfred
*seufz* und damit rückst Du erst jetzt heraus.
Sorry wollte nicht das ihr mit unendlichen Fragen belastet werdet ;)
Schau Dir die Einleitung zu den Datums- und Zeitfunktionen an, da wird das mit DATE_SUB und INTERVAL gelöst, die Erklärung zu den Funktionen folgt dann weiter unten auf der verlinkten Seite.
Hab ich gemacht, leider verstehe ich überhaupt nichts
Hallo,
was hat das ganze mit XML zu tun?
Wenn deine Query mit WHERE Klausel keine Daten hervorbringt, dann versuchst du es vielleicht einmal ganz ohne WHERE und schaust, welchen Inhalt es in daten
hat.
Jedoch bringt er mir nichts heraus OBWOHL in der DB etwas vorhanden ist..???!!!
Es muss ja nicht deiner Abfragebedingung (WHERE) entsprechen?
Ciao, Frank