每当我必须使用date / datetime数据类型和SQL时,它真的很令人沮丧,并没有提供一种简单易用的方法。
目前,我的此表RecordsDaily
的列Date
的数据类型为date
。我想将Date
列转换为月份,并仅采用不同的月份值,然后根据月份进行排序。以下是查询。
select distinct(CAST(DATEPART(year,Date) as varchar(10)) + ' ' + datename(MONTH,Date)) Month
from P98.dbo.RecordsDaily
where Date >= '2013/12/1'
order by Month
显然,因为我已将它varchar
设置为date
数据类型并按字母顺序对其进行排序,如下所示。
Month
2013 December
2014 April
2014 February
2014 January
2014 March
2014 May
根据日历对其进行排序的任何帮助。
更新
请注意输出应该是月份和年份
答案 0 :(得分:1)
请尝试:
select Month from(
select distinct(CAST(DATEPART(year,Date) as varchar(10)) + ' ' + datename(MONTH,Date)) Month
,year(Date) yr, month(Date) mn
from P98.dbo.RecordsDaily
where Date >= '2013/12/1'
)x
order by yr, mn
答案 1 :(得分:0)
试试这个!
select * from table order by cast(('01'+id) as datetime)asc
- id是您的column_name