无法使用短日期过滤MS访问日期时间字段

时间:2013-12-31 20:49:51

标签: sql visual-studio-2010 ms-access datetime-format

我正在尝试为我的程序生成一个水晶报告,显然我无法过滤那些采用日期时间格式的数据,如果我使用“=”而不是“>或<”。 我的代码就是这样的

dim x as string ="1/1/2014"
dim y as date
y=cdate(x)

select from [tblname] WHERE [datetime field]=#" & y &"#

除非我复制存储在访问中的实际日期时间数据或使用“>或<”

,否则查询将不会产生任何记录,假设有多个记录的日期为1/1/2014而不是

有什么方法可以在我的SQL查询中将datetime字段格式化为短日期以便于比较?因为我相信存储的时间是我无法使用“=”

过滤它的原因

1 个答案:

答案 0 :(得分:1)

这可以作为参数查询更好。但由于我不知道如何或者如何使用Crystal Reports的Access参数查询,我建议您将日期值格式化为#yyyy-m-d#

"select from [tblname] WHERE [datetime field]=" & Format(y, "\#yyyy-m-d\#")

如果您想在将[datetime field]y匹配时忽略一天中的某个时段,则可以使用DateValue([datetime field])来提供该日期的午夜。

"select from [tblname] WHERE DateValue([datetime field])=" & Format(y, "\#yyyy-m-d\#")

但是,如果您的表包含许多行,则不希望为每行评估DateValue。相反,你可以做这样的事情,如果[datetime field]被编入索引,它可以利用索引检索来提高性能。

"select from [tblname] WHERE [datetime field]>=" & Format(y, "\#yyyy-m-d\#") & " AND [datetime field]<" & Format(y + 1, "\#yyyy-m-d\#")