查找给定周数周期的最接近的未来日期
Find closest, future date of given number of weeks cycle
假设我有一个:
start_date = '2020-01-06'
和date(now())
我想找到最近的未来日期,从现在开始,它是 start_date
的 4 (n)(或另一个数字)周周期的乘积
今天的预期产量为 '2020-03-02'
我想不出任何聪明的主意来检查它。
如果有任何建议,我将不胜感激。
你可以做日期算术:
- 计算现在和 "anchor" 日期之间的差异
- 将其除以 7(每周天数)和 4(周)
- 从结果中取下一个整数值
- 乘以 4 和 7,然后将该天数加到当前日期
在SQL中:
date'2020-01-06' + ceil((current_date - date'2020-01-06')::numeric / 4 / 7)::int * 4 * 7
with t as (select date'2020-01-06' anchor, 4 n)
select
anchor,
n,
current_date,
anchor + ceil((current_date - anchor)::numeric / n / 7)::int * n * 7 next_date
from t
anchor | n | current_date | next_date
:--------- | -: | :----------- | :---------
2020-01-06 | 4 | 2020-02-10 | 2020-03-02
假设我有一个:
start_date = '2020-01-06'
和date(now())
我想找到最近的未来日期,从现在开始,它是 start_date
今天的预期产量为 '2020-03-02'
我想不出任何聪明的主意来检查它。
如果有任何建议,我将不胜感激。
你可以做日期算术:
- 计算现在和 "anchor" 日期之间的差异
- 将其除以 7(每周天数)和 4(周)
- 从结果中取下一个整数值
- 乘以 4 和 7,然后将该天数加到当前日期
在SQL中:
date'2020-01-06' + ceil((current_date - date'2020-01-06')::numeric / 4 / 7)::int * 4 * 7
with t as (select date'2020-01-06' anchor, 4 n)
select
anchor,
n,
current_date,
anchor + ceil((current_date - anchor)::numeric / n / 7)::int * n * 7 next_date
from t
anchor | n | current_date | next_date :--------- | -: | :----------- | :--------- 2020-01-06 | 4 | 2020-02-10 | 2020-03-02