2016-02-12 79 views
0

這可能嗎?我喜歡這個。VB.net在查詢中刪除時間的同時搜索日期

16/01/17-12:20:58

我的數據庫裏面,我想只有查詢的時間。在子查詢中是否有一個函數,或者是否有其他選項?

sql = "select * from qry where DateConduct between '" & dtFrom.Value.Date.ToString("yy-MM-dd") & "' and '" & dtTo.Value.Date.ToString("yy-MM-dd") & "'" 

如果可能我希望上面類似的東西。我使用MS ACCESS作爲數據庫。

+0

DateConduct是一個字符串類型列(即char/varchar)嗎? – Tomalak

+0

我的數據庫中的短文本 – Denver

+0

您不能將日期存儲爲字符串,並期望它仍然像日期一樣工作。對於查詢,而不是試圖剝離它,你可以使用包括整個一天的時間(例如第二天的00:00:00到23.59.59或00:00:00) – Plutonix

回答

0

您可以使用SQL date()函數只返回的日期部分

+0

在查詢內部可能嗎?請看看我的查詢 – Denver

0

,就可以把現場的日期或使用CONVERT函數只比較日期。我preffer CONVERT,總是爲我工作。

CAST。

sql = "select * from qry where CAST(DateConduct AS DATE) between '" & dtFrom.Value.Date.ToString("yyyy-MM-dd") & "' and '" & dtTo.Value.Date.ToString("yyyy-MM-dd") & "'" 

CONVERT。

sql = "select * from qry where CONVERT(VARCHAR, DateConduct, 112) between '" & dtFrom.Value.Date.ToString("yyyyMMdd") & "' and '" & dtTo.Value.Date.ToString("yyyyMMdd") & "'" 

希望這會有所幫助。最好的祝福。

+0

Abner是否正確,請使用Convert and Cast。 – GabrielVa

+0

它表示「未定義函數'CONVERT'表達式。」即時通訊使用方式。 – Denver

+0

呃,對不起,但是您將帖子標記爲SQL ...無論如何,我不確定Access語法如何。你應該修改你的數據庫,把列類型改爲datetime或者尋找一些解決方案,例如「SELECT CAST(LEFT(CONVERT(VARCHAR,GETDATE(),112),2)+ DateConduct,10)AS DATE)FROM qry 「 – Abner

1

(請參數化查詢。它會運行得更快,它更安全。)

您的文章沒有指定特定的數據庫平臺。如果你在最近的一個版本的SQL Server,你將日期和時間類型,所以可以做

SELECT * FROM Qry WHERE CAST(DateConduct AS Date)[email protected] 

如果你的東西舊的或不同有一些技巧 -

DATETIME在內部是FLOAT,因此您可以執行CAST(TRUNCATE(CAST(DateVal AS Float))AS DateTime)以獲取日期組件。將它與你的日期進行比較,你很好。

BETWEEN查詢如你所見可以提供幫助。如果你這樣做

SELECT * FROM Tbl WHERE DateVAl BETWEEN @StartOfDay AND DATEADD(s,86399,@StartOFDay) 

然後你還可以獲得當天的所有記錄。

+0

對不起,我只是更新我的問題,我正在使用MS Access數據庫。 – Denver