Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MYSQL Datenbank Einträge chronologisch sortieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MYSQL Datenbank Einträge chronologisch sortieren


 
sprengstoff
04-03-2002, 21:47 
 
Die Einträge meiner News Tabelle möchte ich gerne chronologisch sortieren. Und zwar anhand des Feldes Date mit dem Typ "DATETIME". Wenn ich es einfach mit ORDER BY DATE mach werden die Einträge nicht genau chronologisch sortiert und nach ID möchte ich auch nicht ordnen.

Wie kann ich also genau chronologisch sortieren anhand des Feldes date?

Vielen Dank im voraus!

mfG
Guido

 
Titus
04-03-2002, 22:03 
 
Wenn Dir Sortierung nach Sekunden nicht genau genug ist, speichere das Ergebnis von list (http://www.php3.de/de/list) ($mu, $sec) = explode (http://www.php3.de/de/explode)(' ', microtime (http://www.php3.de/de/microtime)()); return (float)$mu; in einem eigenen VARCHAR- oder FLOAT-Feld MICROTIME und order by DATE, MICROTIME

 
Berni
04-03-2002, 22:03 
 
was meinst du mit "nicht genau"??

 
sprengstoff
05-03-2002, 00:52 
 
Wenn ich zum Beispiel einen Eintrag habe bei dem im Feld Date "2002-03-04 22:10:42" steht und bei einem anderen "2001-03-05 00:42:59", dann wird bei ORDER BY DATE DESC der Eintrag von "2001-03-05 00:42:59" zuerst ausgegeben obwohl er älter ist als der andere.

Oder sehe ich das falsch (kann auch sein)?

mfG
Guido

 
Titus
05-03-2002, 06:45 
 
Ein Eintrag vom 5. März ist älter als einer vom 4. März des gleichen Jahres?
Dann hab ich also diese Antwort geschrieben, bevor du deine Frage gestellt hats.
Faszinierend! :D

 
sprengstoff
05-03-2002, 11:13 
 
Des gleichen Jahres? Da steht doch 2001!

mfG
Guido

 
Titus
05-03-2002, 20:48 
 
öhm ... übergesehen, sorry. Welche mySQL-Version?
Wenn neueste (3.23.49a bzw. 4.0.1): Bug schon an mysql.com gemeldet (http://www.mysql.com/doc/B/u/Bug_reports.html)?

 
hand
05-03-2002, 20:51 
 
... order by date desc:
2002-03-04 22:10:42
2001-03-05 00:42:59

... order by date:
2001-03-05 00:42:59
2002-03-04 22:10:42

Poste bitte Dein Select Statement. Das muß eine andere Ursache haben.

 
sprengstoff
06-03-2002, 18:38 
 
... order by date desc (leider auch):
2001-03-05 00:42:59
2002-03-04 22:10:42

 
Titus
06-03-2002, 21:10 
 
1) ist das ganze auch in einem DATE-Feld?
2) wenn nicht: sind vielleicht irgendwo Leerzeichen versteckt?

 
hand
06-03-2002, 21:22 
 
Original geschrieben von hand
Poste bitte Dein Select Statement. Das muß eine andere Ursache haben.

.. oder ist es so geheim?

irgendeinen Ansatz brauchen wir ja um helfen zu können.

Kann es sein
... order by feld1, date ?

Alles Mutmaßungen, also es liegt an Dir wieviel Zeit die Klärung erfordert.

[Editiert von hand am 06-03-2002 um 21:25]

 
sprengstoff
06-03-2002, 23:18 
 
$query = mysql_query ("select *, date_format(date, '%d.%m.%y %H:%i') as date FROM $table_news ORDER BY date DESC LIMIT $offseta,$newsproseite", $sqlconnect);

das feld date hat den typ DATETIME

mfG
Guido

 
sprengstoff
06-03-2002, 23:25 
 
oh, ich glaub ich weiss jetzt woran es gelegen hat:

durch die datumsformatierung im mysql-query werden die
einträge nicht richtig sortiert (glaube ich)!

kann mir das jemand bestätigen?

wie kann ich das datum denn sonst noch formatieren,
ausser im mysql-query?

danke im voraus

mfG
Guido

 
Titus
06-03-2002, 23:57 
 
nenn einfach dein alias anders als die Spalte, und pass die Auswertung der Query an, schon funzt das:
date_format(...) as date_out

 
sprengstoff
07-03-2002, 13:22 
 
Danke, klappt super!!!

mfG
Guido

 
hand
08-03-2002, 22:25 
 
$query = mysql_query ("select *, date_format(date, '%d.%m.%y %H:%i') as datetemp FROM $table_news ORDER BY date DESC LIMIT $offseta,$newsproseite", $sqlconnect);

 
hand
08-03-2002, 22:27 
 
ups, hab die bereits gegebenen Antworten nicht gesehen, sowas gibt es auch *g*


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:42 Uhr.