我想获得存储在数据库中的最小日期和最大日期。
因为我使用了以下查询:
select min(sauda_date) as MinDate,max(sauda_date) as MaxDate from tradefile
我得到以下结果:
但我知道这个结果是错误的。
应该是:
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
但我得到了以下结果:
虽然我的结果应该是:
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。
答案 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