查询以减去Now()-[Table]。[Field]

时间:2019-05-30 03:16:41

标签: sql ms-access

我想运行一个查询,该查询从今天开始减去一定天数,然后对该结果进行过滤。我在Access 2007中工作

这可行,但是我需要从名为SetupExp.qryFilter的表中读取50

SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp
WHERE Now() -50;

我已经尝试过WHERE Now() -[SetupExp].[qryFilter]
没运气,它只是提示您输入值。

我想将50放在表/字段中,以便查询无需用户输入即可读取它。

2 个答案:

答案 0 :(得分:0)

据我了解,您需要从现在开始的最近50天内显示SaleDate记录,并能够将此天数存储在SetupExp表中。如果是这样,您可以使用如下查询:

SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp, SetupExp
WHERE CustItemExp.SaleDate > Now()-[qryFilter];

如果您需要可编辑的查询(如注释中所建议),请使用DLookup:

SELECT CustItemExp.LocationKey, CustItemExp.MarketBasket, CustItemExp.SaleDate
FROM CustItemExp
WHERE CustItemExp.SaleDate > Now()-DLookUp("qryfilter","SetupExp")

答案 1 :(得分:0)

所有Now() - 50的拳头都不是从今天开始减去50天的正确方法。正确的方法是DateAdd('d', -50, Now()),或者如果您不想使用时间成分,而只使用天数DateAdd('d', -50, Date()),则更好。

您可以使用DLookup从表中查找值。如果要查找单个固定值(您的表从字面上看具有该值的单个记录),则可以使用DLookUp('qryfilter', 'SetupExp')。如果您的表有多个记录,并且取决于您要相对于每个CustItemExp使用哪种记录,则可以将JOIN CustItemExpqryfilter作为SQL语句的一部分或使用DLookup的可选第3个参数,它作为WHERE类型的过滤器。