我是SQL Server新手。你能否告诉我如何根据年,月,日,时间对这张桌子进行排序?这样我就可以按日期的正确升序显示“NAME”等其他列。
我使用了以下SQL查询,但这会以ascii字符顺序返回结果:
SELECT *
FROM table_name
WHERE YEAR = '2016'
ORDER BY YEAR, MONTH, DDATE, TIME
不按日期排序。你能告诉我一个如何实现这个目标的例子。
我有一个如下所示的SQL Server表:
答案 0 :(得分:1)
正如B. Clay所暗示的那样,月份可能没有按照你的想法行事,因为它看起来像是varchar或类似的,它只是按字母顺序排序。
尝试这样的事情:
SELECT * FROM table_name
where YEAR = '2016' order by
YEAR, DATEPART(MM,MONTH + ' 1 2016'), DDATE, TIME
答案 1 :(得分:1)
首先。只要有可能,您应该只使用一列作为日期。
但在您的情况下,您的列是VARCHAR类型。尝试这样的事情。
SELECT * FROM table_name where YEAR = '2016'
order by
CONVERT(Int,YEAR),
(CASE MONTH
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12),
CONVERT(Int,DDATE),
CONVERT(TIME, TIME)