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

时间:2016-02-12 13:36:54

标签: sql 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作为数据库。

3 个答案:

答案 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") & "'"

希望这会有所帮助。最好的问候。