2012-09-03 66 views
1

我的表名是 '信息'如何在SQL Server中顯示VARCHAR列特定範圍值2000

結構是:

No int, 
Name varchar(200), 
Date varchar(30) 

記錄:

No Name  Date 
===================================== 
1 A  25/08/2012 
2 B  10/08/2012 
3 C  11/08/2012 
4 D  01/09/2012 

我的問題是我想要2012年8月25日至2012年9月1日之間的號碼,姓名,日期

我被試過follwing q uery,但我無法得到它。

select No,Name,Date 
from information 
where Date>='25/08/2012' and Date<='01/09/2012' 

我不想改變日期列(VARCHAR)爲datetime

請幫我

回答

1

請使用以下查詢你並不需要更改日期列(VARCHAR)爲datetime。

select No,Name,Date from information where CONVERT(date,[DATE],103) >= CONVERT(date,'25/08/2012',103) and CONVERT(date,[DATE],103) <= CONVERT(date,'01/09/2012',103) 
+0

感謝您的回覆。請更新爲CONVERT(日期,[日期],103)的CONVERT(datetime,[DATE],103)插入內容 –

1

你可以嘗試VARCHAR轉換爲日期時間:

SELECT No,Name,Date from information 
WHERE CONVERT(datetime, Date, 103) >= CONVERT(datetime, '25/08/2012', 103) 
AND CONVERT(datetime, Date, 103) <= CONVERT(datetime, '01/09/2012', 103) 
+1

感謝您的回覆,請更新最後行<=而非> = –

0

你需要將VARCHAR數據類型轉換爲Date。嘗試,

SELECT No, Name, [Date] 
FROM information 
where CAST([Date] AS Date) BETWEEN CAST('2012-08-25' AS DATE) AND 
            CAST('2012-09-09' AS DATE) 
+0

感謝您的回覆,我試過您的查詢,但我無法得到它。最初的錯誤是'類型日期不是一個定義的系統類型'。在我將'Date'更改爲'Datetime'後,錯誤是'將char數據類型轉換爲日期時間數據類型導致超出日期時間值。 –

1

如前所述,將您的列轉換爲日期時間。我親自使用一個介於兩者之間的語句作爲它的清潔程

select No,Name,Date from information where convert(datetime, Date, 103) between convert(datetime, '25/08/2012', 103) and convert(datetime, '01/09/2012', 103) 

根據您的輸入參數,你也許可以將其轉換爲日期時間提前(這樣你就可以檢查它們被執行之前輸入的數值例子。

declare @startdate datetime 
declare @enddate datetime 

set @startdate = convert(datetime, '25/08/2012', 103) 
set @enddate = convert(datetime, '01/09/2012', 103) 

select No,Name,Date from information where convert(datetime, Date, 103) between @stardate and @enddate 
+0

感謝您的回覆 –

相關問題