代码之家  ›  专栏  ›  技术社区  ›  JejeBelfort Ted Petrou

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

kdb q
  •  0
  • JejeBelfort Ted Petrou  · 技术社区  · 6 年前

    假设我有一个特定的日期 d :

    d:2019.02.20
    

    如何编写函数 f 以至于 F True 如果 D 是这个月的最后一天, False 否则

    例子:

    f[d]             / Should return 0b
    f[2019.02.28]    / Should return 1b
    f[2019.01.31]    / Should return 1b
    
    0 回复  |  直到 5 年前
        1
  •  6
  •   James Little    6 年前

    您可以使用'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
    
        2
  •  2
  •   Jonny Press    6 年前

    将其转换为一个月,添加1以获得下个月,将其转换为一个日期(将给出月的第一天),减去1并与输入进行比较:

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