Sql 按一周中的哪一天排序的订单日期
我是一名SQL新手,正在尝试找出如何在列中显示日期作为日期,然后按一周中的某一天排序(即周一>周二>周三>等等) 将第一部分记下(显示为日期),但当我按“日期”列排序时,它似乎按字母顺序排序(即星期一>星期五>星期六>等等) 我的问题是:Sql 按一周中的哪一天排序的订单日期,sql,oracle,date,sql-order-by,Sql,Oracle,Date,Sql Order By,我是一名SQL新手,正在尝试找出如何在列中显示日期作为日期,然后按一周中的某一天排序(即周一>周二>周三>等等) 将第一部分记下(显示为日期),但当我按“日期”列排序时,它似乎按字母顺序排序(即星期一>星期五>星期六>等等) 我的问题是: SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day FROM employees ORDER BY Day 如果您有任何意见,我们将不胜感激:)正如vkp所说,您可能需要这样做 SELE
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;
因此,orderby to_char(雇用日期,'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
您可以使用为一周中的某一天添加字符(,'d')
:
SELECT last_name, hire_date, TO_CHAR(hire_date, 'DAY') AS Day
FROM employees
ORDER BY TO_CHAR(hire_date, 'D');
可能会有一些额外的操作来获得正确的第一天,因为这取决于国际化设置。使用
ctrl-K
将文本格式设置为code
或在每行开头添加4个空格。使用按雇用日期排序
请用您使用的数据库标记您的问题。@GordonLinoff我想他标记的是SQL不确定那是什么抱歉,现在已经更新了(Oracel SQL*Plus)谢谢你的回复。是的,我想按照你的第二个示例中的说明进行订购。我尝试了按建议的“datepart”订购,但似乎不起作用,可能不是Oracle兼容的函数?是的。我在不了解你的rdbms时写了这篇文章,现在我编辑了答案以包含Oracle函数。谢谢。将在f中更具体地介绍数据库类型未来的问题!没问题。你可以阅读这里,了解如何提出更好的问题。例如,我回答了两个问题,因为我不知道你在问什么。所以一些示例数据也很有帮助。谢谢,做了很多工作。我没意识到我可以通过关键字顺序应用字符转换,很高兴知道。