按星期几的订单日期

Order date by day of the week

我是一名 SQL 菜鸟,正在尝试弄清楚如何在列中显示日期作为日期,然后按星期几排序(即星期一 > 星期二 > 星期三 > 等等。 .)

将第一部分记下来(显示为日期)但是当我按 'DAY' 列排序时,它似乎按字母顺序排序(即星期一 > 星期五 > 星期六 > 等...)

这是我的查询:

SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day
FROM employees
ORDER BY Day

如有任何意见,我们将不胜感激:)

正如 vkp 所说,您可能想要

SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day
FROM employees
ORDER BY hire_date

这将显示像

这样的日子
1/10/2015   thursday
2/10/2015   friday
...
30/10/2015  friday

但是如果你想按星期几而不是字母顺序排序,你需要使用不同的日期函数,具体取决于你的数据库

sql server 你有 datepart

 select datename(dw,getdate()) --Friday       
 select datepart(dw,getdate()) --6

Oracle 你有

select to_char(hire_date, 'D') from dual;

所以order by to_char(hire_date, 'D')会给你

05/10/2015   monday
12/10/2015   monday
19/10/2015   monday
26/10/2015   monday
06/10/2015   tuesday
13/10/2015   tuesday
20/10/2015   tuesday
27/10/2015   tuesday

您可以使用 to_char(<date>, 'd') 作为星期几:

SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day
FROM employees
ORDER BY TO_CHAR(hire_date, 'D');

可能需要一些额外的操作才能获得正确的第一天,因为这取决于国际化设置。