【问题标题】:Handle Dates Over Years多年来处理日期
【发布时间】:2015-08-26 18:35:02
【问题描述】:

我想按降序显示日期列。例如,我希望它显示的方式是

2015 年 4 月 15 日
2015 年 3 月 15 日
2014 年 4 月 15 日
2014 年 3 月 15 日
2013 年 4 月 15 日
2013 年 3 月 15 日

但是,我的查询结果按月降序显示。我应该改变什么以获得所需格式的结果?

Create Table DateTest
(
  ID int
  ,testdate datetime
)

Insert Into DateTest Values
(1, '2013-03-15 00:00:00.000')
,(2,'2014-03-15 00:00:00.000')
,(3,'2015-03-15 00:00:00.000')
,(4,'2013-04-15 00:00:00.000')
,(5,'2014-04-15 00:00:00.000')
,(6,'2015-04-15 00:00:00.000')

Select ID, CONVERT(VARCHAR(10), TestDate, 101) As [Date] FROM DateTest
ORDER BY [Date] DESC

【问题讨论】:

  • 因为您将其排序为VARCHAR(10)。这会将日期视为纯文本,并进行相应的排序。如果要按实际日期排序,请不要使用CONVERT(),或者确保将其转换回DATEDATETIME

标签: sql-server-2008 date


【解决方案1】:

您可以ORDER BY 原始日期值,但仍将SELECT 值作为VARCHAR(10) 像这样:

Select ID, CONVERT(VARCHAR(10), TestDate, 101) As [Date] FROM DateTest
ORDER BY TestDate DESC

这将按照您的意愿对它们进行排序,并且仍然以VARCHAR(10) 格式显示它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2011-01-27
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多