我有这个简单的数据库:
2013年7月2日
2013年7月13日
我编写一个简单的SQL语句,从日期列表中选择最大的日期。我尝试使用(最大功能)如下:
select max([P_Date]) from [BalDB].[dbo].[tab_Product]
结果不正确;它给了我最小的日期而不是最大的日期:
7/2/2013
所以请帮助我知道我的SQL语句中的问题是什么,我该如何解决它 问题:从日期列表中获取最佳日期,或者将其与本地日期进行比较,然后选择更大的日期!!
答案 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,但为了按原样查询您的数据,这将有效。