2013-04-06 165 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