October 2002
Intermediate to advanced
1024 pages
27h 26m
English
You want to sort in day-of-week order.
Use DAYOFWEEK( ) to
convert a date column to its numeric day of week value.
Day-of-week sorting is similar to calendar day sorting, except that you use different functions to get at the relevant ordering values.
You can get the day of the week using DAYNAME( ),
but that produces strings that sort lexically rather than in
day-of-week order (Sunday, Monday, Tuesday, etc.). Here the technique
of displaying one value but sorting by another is useful (Recipe 6.5). Display day names using DAYNAME( ), but sort in day-of-week order using DAYOFWEEK( ), which returns numeric values from 1 to 7 for Sunday
through Saturday:
mysql>SELECT DAYNAME(date) AS day, date, description->FROM event->ORDER BY DAYOFWEEK(date);+----------+------------+-------------------------------------+ | day | date | description | +----------+------------+-------------------------------------+ | Sunday | 1776-07-14 | Bastille Day | | Sunday | 1809-02-12 | Abraham Lincoln's birthday | | Monday | 1215-06-15 | Signing of the Magna Carta | | Tuesday | 1944-06-06 | D-Day at Normandy Beaches | | Thursday | 1989-11-09 | Opening of the Berlin Wall | | Friday | 1957-10-04 | Sputnik launch date | | Friday | 1958-01-31 | Explorer 1 launch date | | Friday | 1732-02-22 | George Washington's birthday | | Saturday | 1789-07-04 | US Independence Day | | Saturday | 1919-06-28 | Signing of the Treaty of Versailles | +----------+------------+-------------------------------------+ ...