【发布时间】:2014-11-03 06:29:41
【问题描述】:
我正在设置定期计费处理器*。客户希望能够设置客户可以选择每两周进行一次计费,也就是每两周一次。
我可以尝试自己计算“下一个”付款日期,但记录第一个付款日期似乎更可靠,然后使用 SQL 查询计算“今天是第一个付款日期后的 2 N 周”日期”。
select * from recurring_payments
where (datediff(first_billing_date, now() % 14) = 0
但是,这样做的缺点是进行(可能)不可索引的全表扫描。有没有更好的方法来查找字段匹配 2N 天前的行?
这最初是在 MySQL 中,但几周后会转移到 MSSQL,因此通用方法会比定制功能更好。
*是的,我很害怕。
【问题讨论】:
-
您使用的是哪个 RDBMS?例如,SQL Server 有
DATEPART(week, @date)。但是,我使用过的大多数财务软件都配置了可配置的支付期日期。有一个支付期限表,其中包含年份、支付期限、开始和结束日期。通常有一种方法可以自动配置它们,但系统允许您根据需要配置支付期间的特定日期。毕竟,您不知道何时会进行年终展期。 -
"记录第一个付款日期,然后使用SQL查询计算'今天是第一个日期后的2 N周',似乎要可靠得多。" 也许不是。如果计算出的日期正好是圣诞节,会发生什么?还是周日?
-
您可以添加一个数字从 1 到 14 的指标,用于指示付款“周期”
-
@MikeSherrill'CatRecall' 在线支付系统在周日和其他节假日可用。
-
@FabienTheSolution 然后呢?
标签: sql datetime recurring-billing recurring