Code:mysql_query("SELECT ID FROM tabelle WHERE EXTRACT( YEAR FROM `tstamp` ) = '{$aktjahr}'");
In der Tabelle steht u.a. ein Datum, das mit time() erzeugt wurde. Somit steht dort eine wilde Zahlenkombo drin, die keiner wirklich versteht.Die Spalte mit dem Datum heißt 'tstamp'. Es wird kurz vor der Abfrage noch das aktuelle Jahr ermittelt und in der Variablen $aktjahr gespeichert. In unserem Fall wäre der Wert also 2008.
Nun soll eine DB-Abfrage gestartet werden in der alle Daten ausgelesen werden sollen, die dem aktuellen Jahr entsprechen, somit muss $aktjahr in dem Wert von 'tstamp' enthalten sein. So klappt es nicht:Es gibt kein Fehler, aber das Ergebnis der Abfrage ist gleich 0.Code:mysql_query("SELECT ID FROM tabelle WHERE YEAR('tstamp') = '".$aktjahr."'");Wieso? Ich denke, es liegt an der Art und Weise, wie ich auf das Jahr in 'tstamp' zugreife, oder?
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Code:mysql_query("SELECT ID FROM tabelle WHERE EXTRACT( YEAR FROM `tstamp` ) = '{$aktjahr}'");
*hmm* Erst einmal Danke, aber ne, das will so nicht. Ergebnis ist immer noch 0. Meine tstamp-Werte sehen (vielleicht reden wir aneinander vorbei...?) ungefähr so aus: 1210685242 - Nicht so: 08-05-13 11:30:45. Liegt es daran?
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Ähm... Was hat denn 'tstamp' für ein Spaltenformat ? Offensichtlich nicht "Date-Time", wa?
Wenn ich meinen Kaffeesatz richtig deute, schreibst du einen PHP-UnixTimestamp in ein SQL-VarChar-Feld oder sowas ähnliches ?!
quo errat demonstrator
Nein, kein Date-Time. Und Ja UnixTimestamp.
Alle Achtung! Guter Kaffeesatz-Leser!![]()
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Wenn es sich beim tstamp tatsächlich um einen Unix-Timestamp handelt, wäre die Abfrage performanter wenn man aus dem aktuellen Jahr den Start- und Endzeitpunkt als Timestamp ermittelt und die Datensätze mittels BETWEEN eingrenzt.
ich benutze meist FROM_UNIXTIME(timestamp) so das man dann die üblichen Datumsfunktionen nutzen kann.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Okay, wollte jetzt nicht meine DB-Struktur ändern, weil dann extrem viel geändert werden muss im Admin-Bereich und ich noch nicht einmal sicher weiß, ob das Ergebnis so überhaupt gefällt. Deshalb sollte es schon mit meinem UnixTimestamp irgenwie klappen.![]()
Ich habe mal den hier (ohne Erfolg) probiert:Und auch der hier bringt Null Treffer... :Code:mysql_query("SELECT ID FROM tabelle WHERE tstamp = ".mktime(0, 0, 0, 1, 1, $aktjahr)."");Alles plöde...Code:mysql_query("SELECT ID FROM tabelle WHERE FROM_UNIXTIME('tstamp', '%Y') = '".$aktjahr."'");
Nachtrag - So, fiel mir ein: Die erste Abfrage ist wirklich Müll.![]()
Geändert von Magerquark (14.05.2008 um 08:09 Uhr) Grund: Einsicht
<< Meine Ankunft war zeitlich schlecht gewählt...>>
So. Der letzte Entwurf war schon fast richtig. Es waren lediglich zwei Hochkommata zu viel. Also noch einmal: Wer eine Tabelle mit Unix Timestamps hat und daraus eine nach Jahren gezielte Auswahl treffen möchte, der macht so eine Abfrage:Dabei ist tstamp, wie oben schon erwähnt, meine Spalte mit den Unix Timestamps und das Jahr lasse ich mir über eine Variable übergeben (oder wie vorher über eine zuvor ermittelte Jahreszahl ($aktjahr)).Code:"SELECT spalten FROM tabelle WHERE FROM_UNIXTIME(tstamp, '%Y') = '".$_GET['jahr']."' ORDER BY tstamp DESC";
Ich hatte um tstamp in der FROM_UNIXTIME-Klammer zwei Hochkommata. Deswegen klappte es zunächst nicht... - Danke allen Teilnehmern.![]()
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)