从1月到12月开始排序日期(形式为'1月2001')
问题描述:
我有这个查询返回一个结果集与日期(列)作为nvarchar数据类型。从1月到12月开始排序日期(形式为'1月2001')
SELECT DISTINCT
DateName(month , DateAdd(month , (CONVERT(int,DateField1)) - 1 , '2000-01-01'))
+' '+ DateName(year , DateAdd(year , (CONVERT(int,DateField2)), '2000-01-01')) AS [Date]
FROM dbo.table1
WHERE DateName(year , DateAdd(year , (CONVERT(int,DateField2)), '2000-01-01'))= 2009.
这里DateField1和DateField2是table1中的列。
我得到如下图所示
--------------
Date
--------------
March 2009
June 2009
August 2009
September 2009
July 2009
May 2009
November 2009
December 2009
February 2009
April 2009
January 2009
October 2009
我想结果集,从2009年1月开始进行排序,以2009年12月
帮助表示赞赏的结果。
感谢 希德
答
您可以只投的最终结果(我已经在这种情况下,投包裹在一个子查询的呼叫,而不是为了)
SELECT *
FROM
(
SELECT DISTINCT
CAST(
DateName(month , DateAdd(month , (CONVERT(int,DateField1)) - 1 , '2000-01-01'))
+' '+ DateName(year , DateAdd(year , (CONVERT(int,DateField2)), '2000-01-01'))
AS DATETIME) AS [Date]
FROM dbo.table1
WHERE DateName(year , DateAdd(year , (CONVERT(int,DateField2)), '2000-01-01'))= 2009
) AS MyDate
ORDER BY Date
SQL Server将能够相应地转换这样:Here is the fiddle to show the cast works
+0
谢谢贾斯汀。很明显。 – user1176058 2012-04-03 21:19:40
答
- 您可以通过原始场订购(DateField2,DateField1如果我看到 它正确)
- 可以形成MONTHNAME返回的日期和排序此。
- 您可以按顺序排列的条款将选择中的计算组合在一起。
您使用的是什么RDBMS? – 2012-04-03 20:29:30
sql server 2008 – user1176058 2012-04-03 20:55:31