Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 13.05.2008, 15:32   #1
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt

[PHP/mySQL] Abfrage mit Datum


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:
Code:
mysql_query("SELECT ID FROM tabelle WHERE YEAR('tstamp') = '".$aktjahr."'");
Es gibt kein Fehler, aber das Ergebnis der Abfrage ist gleich 0. 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...>>
Magerquark ist offline   Mit Zitat antworten


Alt 13.05.2008, 16:18   #2
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Code:
mysql_query("SELECT ID FROM tabelle WHERE EXTRACT( YEAR FROM `tstamp` ) = '{$aktjahr}'");
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE
emCalculator 1.0

webcreate IT SOLUTIONS
www.webcreate-nrw.de

>>> der code ist so scheisse, soweit hab ich nicht gelesen <<<
webcreate ist offline   Mit Zitat antworten
Alt 13.05.2008, 16:31   #3
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
*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...>>
Magerquark ist offline   Mit Zitat antworten
Alt 13.05.2008, 16:39   #4
TP-Senior
 
Registriert seit: Oct 2006
Ort: Augsburg
webdepp macht sich hier sehr viel Mühe
Ä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
webdepp ist offline   Mit Zitat antworten
Alt 13.05.2008, 16:51   #5
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
Nein, kein Date-Time. Und Ja UnixTimestamp.

Alle Achtung! Guter Kaffeesatz-Leser!
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>
Magerquark ist offline   Mit Zitat antworten
Alt 13.05.2008, 16:53   #6
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Zitat:
Zitat von webdepp Beitrag anzeigen
PHP-UnixTimestamp in ein SQL-VarChar-Feld oder sowas ähnliches ?!
Wenn das stimmt, dann kann man nur sagen, sowas macht man auch nicht.
Mit einem SQL Timestamp geht das o.g. Statement.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE
emCalculator 1.0

webcreate IT SOLUTIONS
www.webcreate-nrw.de

>>> der code ist so scheisse, soweit hab ich nicht gelesen <<<
webcreate ist offline   Mit Zitat antworten
Alt 13.05.2008, 16:54   #7
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
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.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 13.05.2008, 17:24   #8
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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
steffenk ist offline   Mit Zitat antworten
Alt 14.05.2008, 00:46   #9
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt
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:
Code:
mysql_query("SELECT ID FROM tabelle WHERE tstamp = ".mktime(0, 0, 0, 1, 1, $aktjahr)."");
Und auch der hier bringt Null Treffer... :
Code:
mysql_query("SELECT ID FROM tabelle WHERE FROM_UNIXTIME('tstamp', '%Y') = '".$aktjahr."'");
Alles plöde...

Nachtrag - So, fiel mir ein: Die erste Abfrage ist wirklich Müll.
__________________
<< Meine Ankunft war zeitlich schlecht gewählt...>>

Geändert von Magerquark (14.05.2008 um 09:09 Uhr). Grund: Einsicht
Magerquark ist offline   Mit Zitat antworten
Alt 14.05.2008, 10:48   #10
TP-Senior
 
Benutzerbild von Magerquark
 
Registriert seit: May 2004
Magerquark macht alles soweit korrekt

Gelöst


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:
Code:
"SELECT spalten FROM tabelle WHERE FROM_UNIXTIME(tstamp, '%Y') = '".$_GET['jahr']."' ORDER BY tstamp DESC";
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)).

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...>>
Magerquark ist offline   Mit Zitat antworten
Alt 14.05.2008, 12:37   #11
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von DSB Beitrag anzeigen
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.
Mein Vorschlag ist dennoch performanter, weil Du so nur einmalig 2 Integerwerte ermittelst, welche MySQL schneller vergleichen kann.
Bei der Variante mit FROM_UNIXTIME muss MySQL den Wert jedes einzelnen Datensatzes erst errechnen, was Zeit kostet.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[PHP/mySQL] Abfrage mit Datum [PHP/mySQL] Abfrage mit Datum
« Wie man ein CAPTCHA aushebelt | [PHP / mySQL] Update Befehl wirft Fehler aus »

Stichworte
datenbank, mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:02 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67