按星期几的订单日期
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');
可能需要一些额外的操作才能获得正确的第一天,因为这取决于国际化设置。
我是一名 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');
可能需要一些额外的操作才能获得正确的第一天,因为这取决于国际化设置。