最小和最大的日期问题

时间:2013-04-06 05:50:08

标签: sql database datetime join

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

因为我使用了以下查询:

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

我得到以下结果:

enter image description here

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

应该是:

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

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

SQL grammar for SELECT MIN(DATE)

并将我的查询更改为:

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

但我得到了以下结果:

enter image description here

虽然我的结果应该是:

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。

2 个答案:

答案 0 :(得分:1)

“注意:Sauda_Date的类型为nvarchar。”

有你的问题,然后 - 如果你选择nvarchar类型的最小值或最大值,那么SQL使用词典排序 - 如0到9,a到z。它还能用什么呢?怎么可能知道你打算将它们解释为日期时间?

如果您无法更改架构并创建列日期,则可以在将数据类型转换/转换为datetime之后再使用min()max()

所以你想要像

这样的东西

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

答案 1 :(得分:1)

试试这个:

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