Sql 如何使用当天计算NRF 4-5-4日历中的MTD

Sql 如何使用当天计算NRF 4-5-4日历中的MTD,sql,date,calendar,range,date-range,Sql,Date,Calendar,Range,Date Range,我想知道如何编写逻辑来计算NRF454日历中的MTD。通常MTD非常简单,如果今天是2020年9月3日,那么MTD:从2020年9月1日到2020年9月3日,因此它是一个从当月第一天到当天的日期范围 问题是NRF454日历似乎到处都是,我找不到任何模式可以用来创建这种逻辑,而不编写大量的if/case语句 以下是nrf 454日历的示例: 我对技术也相当有限,因为我不能真正使用任何库。我能用的是 SQL和纯javascript 因此,我正在寻找日历背后的逻辑,我可以复制这些日历,以便根据当前日期

我想知道如何编写逻辑来计算NRF454日历中的MTD。通常MTD非常简单,如果今天是2020年9月3日,那么MTD:从2020年9月1日到2020年9月3日,因此它是一个从当月第一天到当天的日期范围

问题是NRF454日历似乎到处都是,我找不到任何模式可以用来创建这种逻辑,而不编写大量的if/case语句

以下是nrf 454日历的示例:

我对技术也相当有限,因为我不能真正使用任何库。我能用的是 SQL和纯javascript


因此,我正在寻找日历背后的逻辑,我可以复制这些日历,以便根据当前日期获取MTD日期范围,因此类似于一个函数,该函数将日期作为参数并返回MTD。我不想用大量的ifs来硬编码,除非有人已经在2018-2022年这么做了

规则实际上相当简单。。这是:

//4周有28天 //5周有35天

//1一个月将有4周或5周 //454 445 544是3个月序列,一个季度总是有35+28+28=91天 //学期总有182天 //一年总有364天

//因为一年有365天,所以每年还有1天或2天 //正常年份为1天,闰年为2天

//每年剩余天数达到7天时,需要额外增加一周(每年53周)

//闰年是那些可以除以4和400,但不能除以100的年份

//一个会计日历可以从任何公历日期开始。这种日历一周的第一天总是第一天

如果您在每个界限之间循环计数器,对于时间单位、周、月、季度、学期和年份(根据进度数组放置月份),您只需要使用If。。一个用于月进度,另一个用于闰年

我自己也在做一个实现,我希望过一段时间我就能实现它

请看一下如何格式化代码。