首页 > 解决方案 > 在sql中排序日期

问题描述

我将日期存储在我的列中

 Wednesday, November 21, 2018
 Wednesday, August 22, 2018
 Wednesday, August 22, 2018
 Wednesday, August 22, 2018
 Wednesday, August 15, 2018
 Tuesday, November 27, 2018
 Tuesday, November 06, 2018
 Monday, November 19, 2018

我在用

 ORDER BY CONVERT(varchar(100), submissionDate, 101) DESC 

但它没有以排序方式给我列。我的专栏是 NVARCHAR(MAX)

标签: sqlsql-servertsql

解决方案


如果您坚持使用列类型 nvarchar,您可以将值转换为日期,如下所示:

SELECT *, submissionDate
, convert(date
          , right(submissionDate, len(submissionDate) 
            - charindex(',', submissionDate))
          , 107) as my_date
FROM your_table
ORDER BY my_date

要不就

SELECT submissionDate
FROM your_table
ORDER BY convert(date
          , right(submissionDate, len(submissionDate) 
            - charindex(',', submissionDate))
          , 107)

由于您的日期格式,转换有点麻烦。Sql Server 似乎没有匹配的内置格式。因此,我们通过删除第一个逗号之前的部分来摆脱星期几(星期一,..),然后结果符合 format 107 (Mon dd, yyyy)


推荐阅读