0

我有这个简单的数据库:

2013 年 7 月 2 日

2013 年 7 月 13 日

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

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

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

7/2/2013

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

4

2 回答 2

2

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

您需要做的基本上是@David提到的内容,可能是列的数据类型,或者如果它不可行,那么您可以在查询中将其转换为datetime

例如

select max(cast([P_Date] as datetime)) from [BalDB].[dbo].[tab_Product]
于 2013-07-21T22:06:29.033 回答
0

max 函数使它比它需要的慢,试试这个。

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

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

于 2013-07-21T22:06:25.237 回答