mysql数据库语法改造成dm数据库DATE_SUB

给了一个任务就是把一个项目用dm数据库正常跑起来,真的难呀,项目原本是使用的mysql、

问题寻找

mysql数据库语法改造成dm数据库DATE_SUB_第1张图片
dm数据库保存,我看mysql跑的挺好的,然后开始找原因。
其中还没有看懂这两个函数,特意搜了搜
LAST_DAY 取最后一天
DATE_SUB() 函数从日期减去指定的时间间隔。
发现原来是减掉日期的函数不支持。

问题处理

select *
FROM dwd.base_organizational_all_versions og
         INNER JOIN
     dwd.DWD_PER_ALL_ASSIGNMENTS_F ass on og.organization_id = ass.ORGANIZATION_ID
where LAST_DAY(DATE_SUB(CONCAT('202309', '01'), INTERVAL 1 MONTH)) BETWEEN ass.EFFECTIVE_START_DATE AND ass.effective_end_date
  AND LAST_DAY(DATE_SUB(CONCAT('202309', '01'), INTERVAL 1 MONTH)) BETWEEN og.date_from and og.date_to

这个意思,'20230901’这个日期的上个月的最后一天
去查dm数据库的函数文档
mysql数据库语法改造成dm数据库DATE_SUB_第2张图片
不过我不是很理解为啥要制定月的1号的上个月 的最后一天,为啥这个逻辑不可以转换成制定月的1号的前一天,不就是上个月的最后一天了么,感觉可能是之前说的不是1号导致的吧
mysql数据库语法改造成dm数据库DATE_SUB_第3张图片

select *
FROM dwd.base_organizational_all_versions og
         INNER JOIN
     dwd.DWD_PER_ALL_ASSIGNMENTS_F ass on og.organization_id = ass.ORGANIZATION_ID
where LAST_DAY(add_days(CONCAT('202309','01'),-1)) BETWEEN ass.EFFECTIVE_START_DATE AND ass.effective_end_date
  AND LAST_DAY(add_days(CONCAT('202309','01'),-1)) BETWEEN og.date_from and og.date_to

你可能感兴趣的:(dm数据库,数据库,mysql)