-
-
呢喃 数据达人Lv4
发表于2020-12-29 16:58
悬赏1
已解决
楼主
如何根据日期参数选择不同日期获取对应的上季度末的最后一天的日期
最佳答案
呢喃 发表于 2020-12-29 17:13
od函数我知道,但是不清楚具体怎么写?这个上季度末的时间是作为参数传进sql中,用来获取这一天的值 ...
感觉判断起来很复杂,实际操作的时候od函数在yyyyq转换到yyyymmdd格式不能识别yyyyq的格式。我还有一个思路是先做判断求当前季度的最后一个月,先用当前月是否是季度中的第一个月判断,用JSY函数,如果是直接加3就是该季度最后一个月再用,如果不是就m-1一直这样判断下去直到判断到是第一个月。判断到了第一个月m+3就是最后一个月了。有了当前季度的最后一个月,直接m-4就是上一个季度的最后一个月了。最后再用d=lastday取到最后一天即上季度最后一天了。
产品里做这样的操作很复杂,可以考虑一下在sql中写。
JSY函数如下
定义
JSY (N)
判断月份N是否是一个季度的第一月,返回逻辑值。如果是返回TRUE,否则返回FALSE,JSY是季首月的简称;
参数
N
正整数或能转化为正整数的字符串。
示例
JSY('01') 返回 TRUE
JSY('04') 返回 TRUE
JSY('07') 返回 TRUE
JSY('10') 返回 TRUE
JSY('11') 返回 FALSE
注意
该函数仅为内存计算函数,不能用于数据库计算,函数参数中不能有 主题表字段
3个回答
可以用od函数https://help.esensoft.com/doc-view-58.html 最后一天的参数是“d=lastday”
xxxl 发表于 2020-12-29 17:06
可以用od函数https://help.esensoft.com/doc-view-58.html 最后一天的参数是“d=lastday”
od函数我知道,但是不清楚具体怎么写?这个上季度末的时间是作为参数传进sql中,用来获取这一天的值
呢喃 发表于 2020-12-29 17:13
od函数我知道,但是不清楚具体怎么写?这个上季度末的时间是作为参数传进sql中,用来获取这一天的值 ...
感觉判断起来很复杂,实际操作的时候od函数在yyyyq转换到yyyymmdd格式不能识别yyyyq的格式。我还有一个思路是先做判断求当前季度的最后一个月,先用当前月是否是季度中的第一个月判断,用JSY函数,如果是直接加3就是该季度最后一个月再用,如果不是就m-1一直这样判断下去直到判断到是第一个月。判断到了第一个月m+3就是最后一个月了。有了当前季度的最后一个月,直接m-4就是上一个季度的最后一个月了。最后再用d=lastday取到最后一天即上季度最后一天了。
产品里做这样的操作很复杂,可以考虑一下在sql中写。
JSY函数如下
定义
JSY (N)
判断月份N是否是一个季度的第一月,返回逻辑值。如果是返回TRUE,否则返回FALSE,JSY是季首月的简称;
参数
N
正整数或能转化为正整数的字符串。
示例
JSY('01') 返回 TRUE
JSY('04') 返回 TRUE
JSY('07') 返回 TRUE
JSY('10') 返回 TRUE
JSY('11') 返回 FALSE
注意
该函数仅为内存计算函数,不能用于数据库计算,函数参数中不能有 主题表字段