SQL Month Year数据类型

时间:2014-05-07 04:54:20

标签: sql sql-server-2008

每当我必须使用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

根据日历对其进行排序的任何帮助。

更新
请注意输出应该是月份和年份

2 个答案:

答案 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