在 Access 数据库上使用 VBscript 和 SQL 你如何 select 记录基于与今天日期的日期比较

Using VBscript and SQL on an Access database how do you select records based on a date comparison with todays date

这听起来像是一个非常幼稚的问题,但我无法满足这个简单的要求。在网站的一个页面上进行选择,将参数 time_period(即 1、7、31 或 365)传递到下一页,该页面应列出所有选定的记录,其中 LastUpdated 日期(标准日期) Access db 中的字段)在当前日期的那么多天之内。

我得到了个位数(1 和 7)的结果,但不是 100% 准确,而 31 和 365 只有非常奇怪的结果。我想某处格式不一致,但我找不到解决方案。

Dim my_time_period
my_time_period = Request.QueryString("time_period")
selection_list.Source = "SELECT *  FROM document WHERE DateDiff('d',LastUpdated,now) <= '"+my_time_period+"'"

我试过如下硬编码一个数字,但得到了相同的结果。

selection_list.Source = "SELECT *  FROM document WHERE DateDiff('d',LastUpdated, now) <= '7'"

我也尝试过使用 Today 而不是 now,但它被作为错误抛出。有人可以帮忙吗?谢谢

您正在比较一个数字

DateDiff('d',LastUpdated, now)

到一个字符串

'7'

而是将数字与数字进行比较:

"SELECT *  FROM document WHERE DateDiff('d',LastUpdated,now) <= "+my_time_period

注意区别:没有单引号

还要注意这是邀请 SQL 注入。

另请注意,在使用索引的数据库中,此表达式应重写为如下形式:

SELECT *  FROM document WHERE LastUpdated > DateAdd('d',now,-"+my_time_period+")"

这样您就可以将列(可能已编入索引)与固定值进行比较。不过在 MS Access 中并不重要