2013-04-06 150 views
0

我希望得到最小的日期,并存储在数据库中最大的日期。最小和最大日期的问题

对于我用下面的查询:

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。

正因为如此我refered以下问题:

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在这里。

回答

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

+0

但我也使用转换(日期时间,..)函数就可以了。(我的编辑的问题)。 。但仍然没有得到它 – Freelancer 2013-04-06 05:55:35

+0

是的,你的查询工作:)谢谢很多。 – Freelancer 2013-04-06 05:56:45

+0

@Freelancer该组由你搞砸了你的查询,其余的都是好的 – Patashu 2013-04-06 06:10:11

1

试试这个:

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

是的,这也工作。谢谢 – Freelancer 2013-04-06 05:57:52