VB.net在查询中删除时间的同时搜索日期

问题描述:

这可能吗?我喜欢这个。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

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

+0

在查询内部可能吗?请看看我的查询 – Denver

,就可以把现场的日期或使用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

(请参数化查询。它会运行得更快,它更安全。)

您的文章没有指定特定的数据库平台。如果你在最近的一个版本的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