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 :(得分:1)
(请参数化您的查询。它运行得更快,更安全。)
您的帖子未指定特定的数据库平台。如果您使用的是最新版本的SQL Server,则可以使用DATE和DATETIME类型,因此可以执行
SELECT * FROM Qry WHERE CAST(DateConduct AS Date)=@DateParam
如果您使用的是旧的或不同的东西,那么有许多技巧 -
DATETIME是内部的FLOAT,因此您可以执行CAST(TRUNCATE(CAST(DateVal AS Float))AS DateTime)以获取日期组件。与你的约会相比,你很高兴。
如您所见,BETWEEN查询可以提供帮助。如果你这样做
SELECT * FROM Tbl WHERE DateVAl BETWEEN @StartOfDay AND DATEADD(s,86399,@StartOFDay)
然后你也会获得当天的所有记录。
答案 1 :(得分:0)
您可以使用SQL date()函数返回日期部分
答案 2 :(得分:0)
您可以将字段强制转换为DATE,或使用CONVERT函数仅比较日期。我喜欢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") & "'"
希望这会有所帮助。最好的问候。