2015-03-02 130 views
0

我正在使用這個命令它沒有提取記錄。 我的命令記錄沒有從SQL查詢中的數據庫中提取

select * from policy_record_manual where (CONVERT(VARCHAR(MAX), enddate, 103) BETWEEN CONVERT(VARCHAR(MAX), '25/02/2015', 103) AND CONVERT(VARCHAR(MAX), '04/03/2015', 103)) 

我有enddate柱說謊25/02/201504/03/2015但仍然沒有任何獲取結果之間的兩條記錄。 請幫助

+0

而不是在使用之間> 2015年2月24日和<2015年3月5日,並以相同的格式轉換雙方。使用Varchar(10) – Amit 2015-03-02 13:04:39

+4

哪個***數據庫系統***是這樣的? – 2015-03-02 13:04:47

+0

以及如何編寫 – 2015-03-02 13:12:34

回答

3

使用適當的日期格式和您的查詢應該工作:

select * 
from policy_record_manual 
where enddate between '2015-02-05' and '2015-03-04' 

你正在做的比較作爲字符串。不要將日期/時間作爲字符串進行比較。使用本機類型比較它們。

你應該總是比較日期/日期時間和日期 - 而不是字符串。大多數數據庫(包括SQL Server)都支持日期的ISO標準並識別該格式的字符串。

-1

試試這個

select * 
from policy_record_manual 
where (CONVERT(VARCHAR(MAX), enddate, 103) BETWEEN CONVERT(VARCHAR(MAX), '02/25/2015', 103) AND CONVERT(VARCHAR(MAX), '03/04/2015', 103)) 
+0

不工作,它與我的命令 – 2015-03-02 13:16:10

+0

s一樣,但改變了我輸入日期的格式 – 2015-03-02 13:17:27

+0

仍然無法工作 – 2015-03-02 13:21:23

0

如果使用SQL Server,您可以通過使用SET DATEFORMAT語句更改查詢的日期格式。

set dateformat dmy 
declare @begin datetime='25/02/2015' 
declare @end datetime='04/03/2015' 

select * 
from policy_record_manual 
where enddate between @begin and @end 
相關問題