日期列表中的最新日期

时间:2013-07-21 21:41:11

标签: sql date

我有这个简单的数据库:

2013年7月2日

2013年7月13日

我编写一个简单的SQL语句,从日期列表中选择最大的日期。我尝试使用(最大功能)如下:

select max([P_Date]) from [BalDB].[dbo].[tab_Product]

结果不正确;它给了我最小的日期而不是最大的日期:

7/2/2013

所以请帮助我知道我的SQL语句中的问题是什么,我该如何解决它 问题:从日期列表中获取最佳日期,或者将其与本地日期进行比较,然后选择更大的日期!!

2 个答案:

答案 0 :(得分:2)

sql max函数返回所选列的最大值,在您的情况下,因为您的数据类型是nvarchar 最大值是按字母顺序放大的值,在这种情况下是7/2/2013(因为“2”大于“13”中的“1”)。

您需要做的基本上是@David提到的内容,无论是列数据类型的可能性还是不可行,那么您可以在查询中将其作为datetime

例如

select max(cast([P_Date] as datetime)) from [BalDB].[dbo].[tab_Product]

答案 1 :(得分:0)

最大功能是让它慢于它需要的速度,试试这个。

select top 1 convert(datetime,P_Date) from [BalDB].[dbo].[tab_Product] order by convert(datetime,P_Date) desc

现在您的日期应该是日期类型,而不是varchars,但为了按原样查询您的数据,这将有效。