0

我想获得存储在数据库中的最小日期和最大日期。

为此,我使用了以下查询:

select min(sauda_date) as MinDate,max(sauda_date) as MaxDate from tradefile

我得到以下结果:

在此处输入图像描述

但我知道这个结果是错误的。

它应该是:

2013 年 2 月 28 日为 MinDate,2013 年 3 月 22 日为 MaxDate。

因此,我提到了以下问题:

SELECT MIN(DATE) 的 SQL 语法

并将我的查询更改为:

select min(sauda_date), max(sauda_date) from tradefile group by sauda_date

但我得到以下结果:

在此处输入图像描述

虽然我的结果应该是:

2013 年 2 月 28 日为 MinDate,2013 年 3 月 22 日为 MaxDate。

也尝试了这个查询:

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile group by convert(datetime,sauda_date)

但没有结果。[预期]

我在哪里犯错?请帮我。

注意: Sauda_Date 在这里是 nvarchar 类型。

4

2 回答 2

1

“注意:Sauda_Date 在这里是 nvarchar 类型。”

那么问题来了——如果你选择 nvarchar 类型的最小值或最大值,那么 SQL 会使用字典排序——如 0 到 9、a 到 z。它还能用什么?它怎么可能知道您打算将它们解释为日期时间?

如果您无法更改架构并使列日期,那么您可以在使用它们之前将数据类型转换/转换为日期min()时间max()

所以你想要类似的东西

select min(convert(datetime,sauda_date)), max(convert(datetime,sauda_date)) from tradefile

于 2013-04-06T05:54:21.613 回答
1

试试这个:

select 
    min(CAST(sauda_date AS DATETIME)) as MinDate,
    max(CAST(sauda_date AS DATETIME)) as MaxDate 
from tradefile
于 2013-04-06T05:56:29.663 回答