在access数据库上使用vbscript和sql如何基于与当前日期的比较来选择记录

tvz2xvvm  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(190)

这听起来像是一个非常天真的问题,但我不能得到这个简单的要求工作。在网站的一个页面上进行选择,该页面将参数时间段(即1、7、31或365)传递到下一个页面,该页面应列出上次更新日期(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'"

我也试过用“今天”而不是“现在”,但它作为一个错误被抛出。有人能帮忙吗?谢谢您

rmbxnbpk

rmbxnbpk1#

你在比较一个数字

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中并不重要

相关问题