0

誰でもこの問題を解決できますか? テーブルから過去 12 か月の日付を選択し、日付が次のように表示されるように形式を変更しようとしています。

2013年2月

2013年1月など

形式を上記のように変更できますが、日付が文字列に変更され、DESC を注文できなくなります。

上記の形式を維持したまま、降順に並べ替えるにはどうすればよいですか

SELECT DISTINCT TOP 12 
--CONVERT(date, NewsDatePosted, 120) AS ArchiveTravelNewsByMonth
--CONVERT(CHAR(4), NewsDatePosted, 100) + CONVERT(CHAR(4), NewsDatePosted, 120) AS MY
--DatePart(Year,NewsDatePosted) AS YearPosted 
--datename(month,NewsDatePosted) + ' ' + DatePart(Year,NewsDatePosted) AS YearPosted
FROM dbo.at_News
order by ArchiveTravelNewsByMonth DESC

ありがとう

ジョージ


SELECT DISTINCT TOP 12 SUBSTRING(CONVERT(VARCHAR(11), NewsDatePosted, 113), 4, 8)
AS ArchiveTravelNewsByMonth,
NewsDatePosted
FROM dbo.at_News
ORDER BY CONVERT(DATETIME, CONVERT(CHAR(4), NewsDatePosted, 100) + CONVERT(CHAR(4), NewsDatePosted, 120))
4

2 に答える 2

0

order by 句と内部 select を追加してみてください

SELECT 
    ArchiveTravelNewsByMonth, 
    NewsDatePosted
FROM(
    SELECT DISTINCT TOP 12 SUBSTRING(CONVERT(VARCHAR(11), NewsDatePosted, 113), 4, 8) AS ArchiveTravelNewsByMonth,
        NewsDatePosted
    FROM dbo.at_News)x
ORDER BY CONVERT(DATETIME, ArchiveTravelNewsByMonth)
于 2013-01-16T11:08:11.307 に答える
0
  create table at_News(NewsDatePosted datetime,Row int identity(1,1))

  Insert into at_News values('2011-01-01')
  Insert into at_News values('2006-10-25')
  Insert into at_News values('2012-09-10')
  Insert into at_News values('2002-06-20')
  Insert into at_News values('2008-12-01')
  Insert into at_News values('2008-10-01')
  Insert into at_News values('2008-04-01')

  select CONVERT(CHAR(4), NewsDatePosted, 100) + CONVERT(CHAR(4), NewsDatePosted, 120)      from  at_News order by NewsDatePosted desc

ORDER BY CLAUSE でDatetime列をフォーマットなしで使用します。

于 2013-01-16T11:28:41.173 に答える