我有这个查询,它返回一个结果集,其中Date(列)为nvarchar数据类型。
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月对结果集进行排序。
帮助表示赞赏。
由于 希德
答案 0 :(得分:2)
您可以直接投出最终结果(我已将调用包装在子查询中,而不是在这种情况下通过强制转换排序)
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
答案 1 :(得分:1)