我是一名SQL菜鸟并且试图弄清楚如何在列中显示日期作为日期,然后按星期几的顺序排序(即星期一>星期二>星期三>等... )
将第一部分放下(显示为当天),但是当我按照我的“DAY'列似乎按字母顺序排列(即星期一>星期五>星期六>等...)
这是我的问题:
SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day
FROM employees
ORDER BY Day
非常感谢任何输入:)
答案 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');
可能会有一些额外的操作来获得正确的第一天,因为这取决于国际化设置。