[MySQL] Datums aflopend sorteren op maand

Pagina: 1
Acties:
  • 620 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb in een MySQL database een tabel met een datum veld. Datums worden als Timestamp opgeslagen. In onderstaand voorbeeld neem ik de gewone dataumnotatie aan.

In dit voorbeeld heb ik 6 datums die ik op datum wil sorten oplopend, vanaf dit moment.

Vandaag 24-12-2003

Datums:
1) 01-10-2001
2) 17-02-2002
3) 24-02-2002
4) 03-11-2002
5) 17-03-2003
6) 24-12-2003
7) 27-12-2003

Ik wil de datums zo laten sorten dat er gesorteerd wordt vanaf ongeacht het jaartal. De volgorde moet dus zo worden:

6) 24-12-2003
7) 27-12-2003
2) 17-02-2002
3) 24-02-2002
5) 17-03-2003
1) 01-10-2001
4) 03-11-2002

Ik ben al zover dat als je de datums die groter zijn dan vandaag (24-12-2003) ongewijzigd laat en de datums lager dan vandaag het huidige jaartal+1 toekend, dat ze dan op de goede volgorde komen. Alleen hoe krijg ik dit in een Query ??

Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 00:40

Knutselsmurf

LED's make things better

MySQL heeft een functie MONTH().

Je kunt dus waarschijnlijk wel iets doen als : ORDER BY MONTH(mijnDatum) DESC

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 06-08 21:54

dArtagnan

Een voor allen, allen voor een

http://www.mysql.com/doc/en/Using_DATE.html
Datums worden als Timestamp opgeslagen.
Als de datums gewoon worden opgeslagen als een timesamp dan kun je ze toch gewoon ordenen. Je kunt ze daarna met date_format weer in het gewenste formaat zetten.

SQL:
1
2
3
SELECT datum
FROM tabel
ORDER BY MONTH(datum), DAY(datum) DESC

[ Voor 98% gewijzigd door dArtagnan op 24-12-2003 17:34 ]


Acties:
  • 0 Henk 'm!

  • Tycoontje
  • Registratie: Februari 2003
  • Laatst online: 15-07 12:59
[b][message=19566786,noline]Koraalduivel schreef op 24 december 2003
Als de datums gewoon worden opgeslagen als een timesamp dan kun je ze toch gewoon ordenen. Je kunt ze daarna met date_format weer in het gewenste formaat zetten.
Nee, hij wil ze niet simpel ordenen. Kijk maar naar z'n voorbeeld. Een soort van "welke verjaardagen komen er aan?". Dus sorteren vanaf vandaag, over de jaarwisseling heen.

Zou het zo gauw zelf ook niet weten. Ben benieuwd naar de uiteindelijke query. Er is vast wel wat voor :Y)

Waar ik zelf momenteel aan denk is 2 queries. Eentje vanaf vandaag tot einde jaar en eentje voor de rest. Of je verwerkt het in 2 stukken. Dat kan natuurlijk ook.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10-08 17:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik snap er niets van
6) 24-12-2003
7) 27-12-2003
2) 17-02-2002
3) 24-02-2002
5) 17-03-2003
1) 01-10-2001
4) 03-11-2002
ik kan daar echt totaal geen volgorde in ontdekken

.edit: oh wacht, je wilt dus alle aankomende verjaardagen op volgorde van tijd sorteren 8)7 Wat Tycoontje zegt zeg maar :+

je kunt toch gewoon sorteren op MONTH(date), maar als MONTH(date) < deze maand, of als MONTH(date) = deze maand maar DAY(date) < deze dag, dan tel je gewoon 12 bij de maand op

Dat moet wel in een query te verwerken zijn lijkt me zo

(hint: IF(), of CASE)

.edit2: of nog handiger, sorteer op DAYOFYEAR(date), en trek daar de huidige dag van het jaar vanaf. Als het resultaat < 0, dan tel je er 366 bij op

[ Voor 101% gewijzigd door .oisyn op 24-12-2003 18:00 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Pagina: 1