[php] Sorteren op datum

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Ik heb de volgende query in mijn script staan
PHP:
1
2
3
4
5
<?
$result = mysql_query("SELECT *,date_format(datum,'%d-%m-%X') 
as datum FROM artikel WHERE categorie='$id' 
and del='nee' ORDER BY datum") or die("oops!!");
?>

Deze moet ervoor zorgen dat alles netjes op datum gesorteerd wordt. Ik heb nu enkele datums in mijn database staan maar die worden zo weergegeven.
code:
1
2
3
4
5
25-02-2002
26-10-2001
06-11-2001
07-11-2001
15-12-2001

Dus die 25-02-2002 moet onderaan komen te staan. Kan iemand me helpen?
Hier zal het denk ik wel aan liggen.

date_format(datum,'%d-%m-%X')

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

SELECT *, date_fortmat(datum, '%d-%m-%X') as Datum2 ...... order by datum
zou moeten werken, maar het ligt eraan hoe datum is opgeslagen in je db

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
wordt opgeslagen als varchar(10). In de vorm hoe hij ook wordt weergegeven. Dus 25-02-2002 staat zo ook in de database.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Dan heb je pech.
Met varchar is wat je nu hebt de imho de enige manier om te sorteren.

Waarom sla je de datum niet in een DATE of Timestamp kolom op ? Dan kan je wel op datum sorteren....

edit:
Linkje naar mysql site

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 26 februari 2002 08:48 schreef frankschers het volgende:
wordt opgeslagen als varchar(10). In de vorm hoe hij ook wordt weergegeven. Dus 25-02-2002 staat zo ook in de database.
Er is een speciaal type voor een datum.... hmm .. waarom zouden ze dat nou gedaan hebben....

Dit lijkt me trouwens eerder een SQL probleem ipv een php probleem...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 24-05 21:44

wzzrd

The guy with the Red Hat

Data omzetten naar date formaat in mySQL table. Kun je makkelijk een scriptje voor schrijven. Ik heb al gekeken of ik de mijne nog had (heb deze fout ook wel een gemaakt), maar die heb ik dus al ge-rm-d...

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik sluit me aan bij de rest hier. Waarom in godsnaam varchar gebruiken voor een datum. Okay je moet ff wat uitzoeken voordat het duidelijk is, maar de voordelen zijn er ook naar. Een berekening op de datum door MySQL zelf zal vele malen sneller zijn dan dat PHP het moet uitvogelen

Verwijderd

Je kan ook een timestamp gebruiken, die kan je helemaal makkelijk sorteren. Btw, normale sorteercode is ASC en de omgekeerde is DESC

bv: select * from table order by timestamp desc;

Verwijderd

Maak van je datum veld een "date-field" en gooi de data er als volgt in Y-m-d, wanneer je dan gaat PHP'en :
PHP:
1
2
3
4
5
6
7
8
9
<?
$resultaat = mysql_query("SELECT * FROM artikel WHERE categorie='$id' and del='nee' ORDER BY datum ASC") or die("oops!!");
while ($row = mysql_fetch_array($resultaat)) {

list($Y,$M,$D) = explode("-",$row[Datum]);
echo "datum :".$D."-".$M."-".$Y."\n<br>";

}
?>

Zoiets dacht ik ff gauw :)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Ik sla mijn datums ook altijd als varchar op, maar dan wel als 20020225, dus dan kan je lekker sorteren. :)

Rustacean


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Ik heb het al opgelost. Heb ff een script gemaakt waarmee ik de datums omzetten naar de goede vorm. Daarna Heb ik de waarde van de kolom veranderd naar date. Alles staat nog hoe het eerst ook in de database stond.

Ik gebruik voortaan date voor mijn kolommen in mijn db. Stukken makkelijker dan die varchar. Ook met berekeningen. Kijk maar op http://www.mysql.com staat alles over tijdsomrekeningen.

Verwijderd

Sorry dat ik deze post verstoor..

Welke functie date.. bedoel je met een unix timestamp en deze omzetten met de php functie date(); ??

Verwijderd

MySQL soort date, zie MySQL.com

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op dinsdag 26 februari 2002 19:29 schreef Manuzhai het volgende:
Ik sla mijn datums ook altijd als varchar op, maar dan wel als 20020225, dus dan kan je lekker sorteren. :)
Gaat dat niet een hele hoop trager dan het sorteren van een datefield?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 26 februari 2002 19:29 schreef Manuzhai het volgende:
Ik sla mijn datums ook altijd als varchar op, maar dan wel als 20020225, dus dan kan je lekker sorteren. :)
Waarom stop je _dat_ dan niet in een integer veld :?

Magoed, ik snap nooit waarom mensen altijd om de datum/timestamp typen van een database heen willen werken. Die typen zijn er echt niet voor de grap bij bedacht.

[edit]
Sory Glimi, ik editte jouw bericht |:(
Op dinsdag 26 februari 2002 22:40 schreef Glimi het volgende:
Gaat dat niet een hele hoop trager dan het sorteren van een datefield?
Ja dat gaat het, 'integer' vergelijkingen zijn veel sneller dan textuele vergelijkingen uit te voeren.
Daarnaast zal ook het indiceren minder goed gaan en is de gebruikte opslagruimte zinloos veel meer...

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Ik gebruik er zelf altijd datetime voor...werkt ook!

Sundown Circus

Pagina: 1