检查给定的日期是否是该月的最后一天

时间:2019-02-20 06:59:07

标签: q kdb

假设我有给定的日期d

d:2019.02.20

如果f是一个月的最后一天,如何编写函数f使得Trued,否则如何写False

示例:

f[d]             / Should return 0b
f[2019.02.28]    / Should return 1b
f[2019.01.31]    / Should return 1b

2 个答案:

答案 0 :(得分:5)

您可以使用`mm $ dt或“ m” $ dt提取日期的月份部分。参见:https://code.kx.com/q4m3/7_Transforming_Data/#723-casts-that-narrow

然后将其与您输入的日期 +1 (将增加一天)进行比较:

q)f:{(`mm$x) <> `mm$x+1}

q)f[2019.02.28 2020.02.28 2019.03.04 2019.03.31]
1001b

答案 1 :(得分:2)

将其保存为一个月,将其加1表示下个月,将其转换回日期(将给出一个月的第一天),减去一个并与输入进行比较:

q){x=-1+"d"$1+"m"$x}[2019.02.28 2020.02.28 2019.03.04 2019.03.31]                                                                                    
1001b