dny*_*war 41 sql date sql-order-by
能帮我解决这个问题吗?我试图按日期排序SQL查询的结果,但我没有得到我需要的结果.
我正在使用的查询是:
SELECT date FROM tbemp ORDER BY date ASC
Run Code Online (Sandbox Code Playgroud)
结果是:
01/02/2009
03/01/2009
04/06/2009
05/03/2009
06/12/2008
07/02/2009
Run Code Online (Sandbox Code Playgroud)
结果应该是:
06/12/2008
03/01/2009
01/02/2009
07/02/2009
Run Code Online (Sandbox Code Playgroud)
我需要以上面的格式选择日期.
非常感谢您的帮助.
man*_*nji 42
您的日期列似乎不是datetime类型,而是varchar.您必须在排序时将其转换为日期时间:
select date
from tbemp
order by convert(datetime, date, 103) ASC
Run Code Online (Sandbox Code Playgroud)
style 103 = dd/MM/yyyy (msdn)
Jon*_*eet 16
听起来我的列不是日期列,而是文本列(varchar/nvarchar等).您应该将其作为日期而不是字符串存储在数据库中.
如果由于某种原因必须将其存储为字符串,请将其存储为可排序的格式,例如yyyy/MM/dd.
正如najmeddine所示,您可以在每次访问时转换列,但我会尽力不这样做.这将使数据库做了很多更多的工作-它不会能够保持适当的索引等.只要有可能,将数据存储在适当的数据本身就是一种类型.
Mic*_*l A 12
不确定你正在使用什么dbms但是我在Microsoft SQL中这样做:
select [date]
from tbemp
order by cast([date] as datetime) asc
Run Code Online (Sandbox Code Playgroud)