kdb - 在 kdb+ 上获取开始日期和结束日期并计算这些日期之间有多少个星期日落在每月 1 日的函数
问题描述
创建一个函数,该函数需要一个开始日期和结束日期,并计算这些日期之间有多少个星期日落在 kdb+ 上的每月 1 日,我该怎么做?
该函数需要显示自 1950 年以来这种情况发生了多少次
解决方案
让我们定义一个函数,它首先返回其参数(类型date
)的工作日。
日期的基础值是从 2000 年 1 月 1 日算起的天数,我们知道 2000 年 1 月 1 日是星期六。第二天显然是星期天,然后是星期一等,2000 年 1 月 1 日之后和之前的每 7 日、14 日、21 日等日也是星期六。因此,如果我们将日期取模 7,我们将得到一个工作日数,其中 0 是星期六,1 是星期日,依此类推。这导致我们得出以下定义。
weekday:{ `sat`sun`mon`tue`wed`thu`fri x mod 7 }
现在我们可以创建一个函数来回答原始问题:
sundaysThe1st:{[start;end]sum `sun=weekday dates where 1=`dd$dates:start+til 1+end-start }
start+til 1+end-start
生成start
和之间的日期列表end
,dates where 1=`dd$dates
仅`sun=weekday dates
返回月份的第一天,1b
如果该月的第一天是星期日则返回,0b
否则返回。sum
实际上是 1 的数量,这正是我们所需要的。
希望这可以帮助。
推荐阅读
- javascript - 从 JavaScript 中的用户代理信息获取设备名称
- go - Keep-alive:死节点检测
- arrays - 如何遍历具有不同类型的类数组并快速打印它们的属性?
- mongodb - 在 Julia 中使用 SSL 证书连接到 Mongodb
- python - 通过字符串调用函数
- jquery - 加载页面时如何加载模式
- c# - System.InvalidOperationException:没有进程与此对象关联
- python - Python在父初始化中创建子对象并访问父属性
- azure-devops - 在 Azure DevOps 中设置权限
- html - 将复选框与标签对齐并为选中的复选框添加背景颜色