SQL如何从YYYYMMDD格式数值型日期列筛选排除每月5日的数据
实现方法
因为你的DUE_DATE_KEY是YYYYMMDD格式的数值类型,最后两位恰好对应每月的日序号,直接用数值取模运算提取日部分即可,不需要额外做日期类型转换,性能更高,也是兼容性最好的方案:
SELECT Due_Date_Key FROM Table WHERE Due_Date_Key % 100 <> 5;
如果所用SQL方言不支持%取模运算符,可以替换为标准MOD函数:
SELECT Due_Date_Key FROM Table WHERE MOD(Due_Date_Key, 100) <> 5;
如果有额外的日期处理需求,也可以转成日期类型后提取日字段过滤(以MySQL为例,不同数据库的日期转换函数略有差异):
SELECT Due_Date_Key FROM Table WHERE DAY(STR_TO_DATE(Due_Date_Key, '%Y%m%d')) <> 5;
内容的提问来源于stack exchange,提问作者Sid
相关产品推荐
相关产品推荐

