[SQL] sorteren van datums

Pagina: 1
Acties:
  • 168 views sinds 30-01-2008

  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
Hallo,


ik heb een bestaande database waar alle datums ingegeven staan in een CHAR veld als:

18-11-2004
19-11-2004
01-12-2004
01-11-2005

en ik heb de volgende querry om de datums uit de database te halen maar er klopt iets niet met het sorteren:

select * from agenda ORDER BY DATE_FORMAT(begin, '%d-%m-%Y')
ASC

hij zet ze in de volgende volgorde:
01-11-2005
18-11-2004
19-11-2004
01-12-2004

dus 2005 komt voor de 2004 en da klopt niet.
iemand enig idee wat dit kan zijn ?
hij sorteert wel op maand en dag maar niet op jaar

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:02

gorgi_19

Kruimeltjes zijn weer op :9

Voordat er moeilijke dingen bedacht worden... Waarom sla je datums op als varchar :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:10
Sla je datums op als datum.
Je kan nu in je query natuurlijk ook je datum (die een char is) als een datetime selecteren, en dan zo gaan sorteren.

https://fgheysels.github.io/


  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
dat heb ik niet gedaan

dat heeft iemand ooit zo gedaan
het is een bestaande database met 3000 records in die ik liever niet naar de knoppen help

  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
@whoami:

hoe doe ik zoiets ?

  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
je moet proberen met een functie de volgorde te verander naar jaar-maand-dag. Dit levert in karaketerdatumveld wel de goede volgorde op

  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
@johny:

en heb je ook een voorbeeld van zo een functie ?

  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
wat voor database gebruik je

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:10
Hangt ervanaf welke DB je gebruikt; als je SQL Server gebruikt, dan kan je het doen met het CONVERT statement. (Ff de juiste syntax in de BoL opzoeken).

https://fgheysels.github.io/


  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
het is een mysql database

  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
volgens mij moet het met

select * from agenda order by str_to_date(begin,'%d-%m-%Y')

lukken

wel vanaf versie 4.11

[ Voor 17% gewijzigd door Johnny Goodbye op 18-11-2004 13:07 ]


  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
MySQL retourneerde:


#1064 - You have an error in your SQL syntax near '(
BEGIN , '%d-%m-%Y' ) LIMIT 0, 30' at line 3


Ik heb versie: MySQL 3.23.58

[ Voor 21% gewijzigd door KloyenZ op 18-11-2004 13:08 ]


  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
kijk hier anders voor andere oplossingen

http://dev.mysql.com/doc/...e_and_time_functions.html

  • KloyenZ
  • Registratie: Maart 2001
  • Laatst online: 30-01 02:54
heb ik al doorgelezen zonder enig resultaat

  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
dat wordt of upgraden of de database aanpassen

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 19-05 16:06
maak een date kolom en copier de data in deze kolom. Verwijder de oude kolom en rename de nieuwe naar de oude. (of kan dat niet met die mysql verise, wel in oracle 9i)

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 13:54
En dit?
code:
1
SELECT * FROM agenda ORDER BY MID(begin,7,4), MID(begin,4,2), MID(begin,1,2)

  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 14:40
moet dat niet
code:
1
SELECT * FROM agenda ORDER BY MID(begin,7,4) + MID(begin,4,2) + MID(begin,1,2)


zijn

Johnny bedenkt dat bovenstaand van jvdmeer ook moet werken

[ Voor 21% gewijzigd door Johnny Goodbye op 18-11-2004 14:08 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:38

Janoz

Moderator Devschuur®

!litemod

kloyenz schreef op donderdag 18 november 2004 @ 13:35:
heb ik al doorgelezen zonder enig resultaat
Als je weigert handleidingen fatsoenlijk door te lezen, of hiertoe niet in staat bent dan heb je hier weinig te zoeken. Meerdere oplossingen zijn mogenlijk mbv de link naar de handleiding die je notabene al naar het juiste hoofdstuk verwijst.

Als je geen zin hebt om moeite te doen om je probleem op te lossen, begrijp je neem ik aan ook wel dat je dat dan ook niet van anderen kunt vragen.

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

Pagina: 1

Dit topic is gesloten.