当列不是日期格式时,如何按日期排序?

时间:2013-04-25 10:06:34

标签: sql-server

我正在查询的数据库有一个用户表,其中的列包含用户为网站注册的日期。

将日期输入varchar列,没有正确的日期格式,如下所示:

Apr 18 2013 12:27PM

当我SELECT MAX (dateColumn)时,我在日期范围内得到一个大约一半的值。我已经考虑使用子串来获取年份,然后是月份,然后是日期并按顺序排序。问题是以0开头的日期将缩短一个字符,如下所示:

May 1 2013 12:27PM

是否有一种简单的方法可以在不改变数据库结构的情况下找到最高日期?

3 个答案:

答案 0 :(得分:2)

尝试select max(convert(datetime, dateColumn, 109))

有关在SQL Server中数据类型之间进行转换的更多信息(包括日期格式)here

答案 1 :(得分:0)

将列转换为格式为“YYYYMMDD”的值,然后对该列进行排序。

答案 2 :(得分:0)

尝试将varchar转换为datetime格式并执行此操作。您应该以相同的格式保存日期。它只是将varchar转换为datetime的示例。

Select * from tblName 
    where Convert(datetime, Convert(varchar(12),DOJ,106)) as DOJ >=
          Convert(datetime, Convert(varchar(12),'2013-04-28',106))