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作为数据库。
答
,就可以把现场的日期或使用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") & "'"
希望这会有所帮助。最好的祝福。
答
(请参数化查询。它会运行得更快,它更安全。)
您的文章没有指定特定的数据库平台。如果你在最近的一个版本的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
DateConduct是一个字符串类型列(即char/varchar)吗? – Tomalak
我的数据库中的短文本 – Denver
您不能将日期存储为字符串,并期望它仍然像日期一样工作。对于查询,而不是试图剥离它,你可以使用包括整个一天的时间(例如第二天的00:00:00到23.59.59或00:00:00) – Plutonix