提问人:Fueled By Coffee 提问时间:10/24/2023 最后编辑:Fueled By Coffee 更新时间:10/25/2023 访问量:109
每 6 个月列出一次
List Every 6 Months Between Dates
问:
我有一个函数,可以使用“直到”列出开始日期和结束日期之间的日期
我正在尝试找到一些东西(可能使用“xbar”),它将从开始日期开始以 6 个月的间隔列出每个日期
例如。2021.02.15、2021.07.15、2022.02.15等
我集成了 Q.addmonths[],但似乎无法将它们放在一起
答:
2赞
cillianreilly
10/24/2023
#1
这样的事情对你有用吗?
q){(-1+`dd$x)+`date$(`month$x)+y*til z}[2021.02.15;6;4]
2021.02.15 2021.08.15 2022.02.15 2022.08.15
它以参数给定的时间间隔生成参数指定的月数。 是您的开始日期。z
y
x
`month$x - pulls out the month of your date
`dd$x - pulls out the day of the month
您也可以像您提到的那样使用(相同的参数):.Q.addmonths
q){.Q.addmonths[x;y*til z]}[2021.02.15;6;4]
2021.02.15 2021.08.15 2022.02.15 2022.08.15
对于这两种解决方案,请记住 https://code.kx.com/q/ref/dotq/#addmonths 文档中的警告:
If the date x is near the end of the month and (x.month + y)’s month has fewer days than x.month, the result may spill over to the following month.
评论
0赞
Fueled By Coffee
10/24/2023
宾果游戏!我大概可以走完剩下的路。我将尝试将“z”重新设计为x和y之间的6个月周期数,而不是“z”作为字面意思,以便它可以在任何结束日期终止
1赞
terrylynch
10/25/2023
#2
这种方法将继续增加 6 个月,直到达到结束日期
q){(-1_(y>).Q.addmonths[;6]\x),y}[2021.02.15;2022.02.15]
2021.02.15 2021.08.15 2022.02.15
评论