数据库查询,如何自定义结算周期

数据表中,有个字段:create_date  为时间类型,每个月的 26号至下个月的25号为一个结算周期,那么在数据集查询中,如何写sql 语句,才能区分数据归属哪个结算周期的

FineReport 用户RzfYB0094268 发布于 2022-9-21 10:43
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-9-21 10:48(编辑于 2022-9-21 11:40)

直接用公式 获取:

DATEINMONTH(MONTHDELTA(today(),-1),26) ----上月26号

DATEINMONTH(today(),26) ----本月25号

image.png

-------------

if(AND(A39>=DATEINMONTH(A39,26),A39<=DATEINMONTH(A39,-1)),DATEINMONTH(A39,1),

IF(AND(A39>=DATEINMONTH(A39,1),A39<=DATEINMONTH(A39,25)),DATEINMONTH(MONTHDELTA(A39,-1),1),

DATEINMONTH(MONTHDELTA(A39,1),1)

)

)

image.png

image.png

image.png

  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 如果一次查询,就可以列出全部周期的数据,按周期分类,这个要怎样写sql 的
    2022-09-21 10:53 
  • Z4u3z1 Z4u3z1 回复 用户RzfYB0094268(提问者) 啥数据库?
    2022-09-21 10:54 
  • Z4u3z1 Z4u3z1 回复 用户RzfYB0094268(提问者) 看不出来?SqlServer 不像,oracle?mysql?
    2022-09-21 10:57 
  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 回复 Z4u3z1 mysql 数据库
    2022-09-21 11:00 
  • Z4u3z1 Z4u3z1 回复 用户RzfYB0094268(提问者) 抱歉 mysql不熟,不知道这个SQL对不对 SELECT A.*,(CASE WHEN DAY(create_date)<=25 THEN STR_TO_DATE(date_add( create_date, interval -1 month ),\'%Y-%m\') ELSE STR_TO_DATE(create_date,\'%Y-%m\') END) FROM TABlE
    2022-09-21 11:14 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-21 10:46

不是直接查上月26至本月25号的数据就行了呀。。录入年份和月份后。把26与25固定写上就行了呀。

  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 新增一个周期表,记录 year month start_date end_date ,再结合原来的表作查询,不知这种做法行不行
    2022-09-21 10:48 
  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 一般周期表,字段是怎样设置的
    2022-09-21 10:49 
  • CD20160914 CD20160914 回复 用户RzfYB0094268(提问者) 可以不用写周期表。你直接从数据库查询对应年与月的26-25号的数据就行了。。你如果一定要弄周期表也是可以的。
    2022-09-21 10:50 
  • CD20160914 CD20160914 回复 用户RzfYB0094268(提问者) 周期表就要看你原始表是如何的了。不清楚你的原始数据是如何的。直接用时间查询不就行了吗
    2022-09-21 10:50 
  • 用户RzfYB0094268 用户RzfYB0094268(提问者) 回复 CD20160914 能不能直接根据 create_date 计算出是哪个周期的
    2022-09-21 11:04 
  • 2关注人数
  • 293浏览人数
  • 最后回答于:2022-9-21 11:40
    请选择关闭问题的原因
    确定 取消
    返回顶部