按星期几订购日期

时间:2015-10-30 17:35:56

标签: sql oracle date sql-order-by

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

将第一部分放下(显示为当天),但是当我按照我的“DAY'列似乎按字母顺序排列(即星期一>星期五>星期六>等...)

这是我的问题:

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

非常感谢任何输入:)

2 个答案:

答案 0 :(得分:1)

正如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

答案 1 :(得分:1)

您可以在一周中的某一天使用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');

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