我有一张表跟踪first_pay_date,期限(付款的持续时间,每行不同)和last_pay_date。我正在添加一个字段pay_date,它将显示下一个付款日期,假设按月和按时付款...付款时间表。我需要pay_date字段根据今天的日期显示下一个付款日期,并继续显示直到今天的日期= last_pay_date /期限的长度。 我尝试使用各种IIf语句,这个基于今天的日期返回日期,但我仍然需要它返回每个月的整个期限的日期,即几个月(即36),而不是从第一个付款日期起30天永远不会改变:
=IIf([first_pay_date]>=Date(),[first_pay_date],DateAdd("d",30,[first_pay_date]))
也许一个表达式不是要走的路,我需要一个查询来创建一个临时表来存储付款日期或两者的组合,甚至可能用于和下一个。我试过寻找这个,但找不到答案,但我觉得这是存在的东西,我只是没有正确搜索。如果有人能指出我正确的方向,我将非常感激。我的数据来自我要导入访问数据库的excel文件。我可以根据现有字段的计算添加字段,但文件中的数据是我必须工作的所有内容,所以我没有收到付款的日期。
示例数据:
first_pay_date | last_pay date | term
9/15/2017 | 8/15/2020 | 36
9/5/2017 | 8/5/2019 | 24
根据今天的日期,我的pay_date = 9/15/2017,但周六,我的pay_date = 10/15/2017。 2017年10月16日,我希望我的pay_date为11/14/2017
答案 0 :(得分:0)
可能是这样的:
=IIf(DateAdd("d", 36 * 30, first_pay_date) > Date(), Null, DateAdd("d", (-Int(DateDiff("d", Date(), first_pay_date) / 30) * 30, first_pay_date))
修正:
=IIf(DateAdd("d", 36 * 30, first_pay_date) > Date(), Null, DateAdd("d", (-Int(DateDiff("d", Date(), first_pay_date) / 30) + 1) * 30, first_pay_date))
模拟:
first_pay_date=DateAdd("d", -36 * 30, Date)
today = DateAdd("d", 60, Date)
? IIf(DateAdd("d", 36 * 30, first_pay_date) > today, Null, DateAdd("d", (-Int(DateDiff("d", today, first_pay_date) / 30) + 1) * 30, first_pay_date))
Result: 2017-12-13