如何在SQL查询中获取当前月份,实现自动填入无需每月手动修改
自动化填入当前月份的SQL实现方案
可以实现,直接使用你所用数据库的内置日期函数替换原语句中的[current month]占位符即可,不需要每月手动修改数值。以下是不同主流数据库的常用场景示例:
注:原语句中筛选字段名为
year,如果该字段实际存储的是年份、年月组合等其他格式,调整对应日期函数的返回格式即可。
MySQL 场景
若year字段存储数字格式的月份(如10代表10月):SELECT * FROM table_1 WHERE year = MONTH(CURRENT_DATE);若
year字段存储YYYY-MM格式的年月字符串:SELECT * FROM table_1 WHERE year = DATE_FORMAT(CURRENT_DATE, '%Y-%m');PostgreSQL 场景
若year字段存储数字格式的月份:SELECT * FROM table_1 WHERE year = EXTRACT(MONTH FROM CURRENT_DATE)::INT;若
year字段存储YYYY-MM格式的年月字符串:SELECT * FROM table_1 WHERE year = TO_CHAR(CURRENT_DATE, 'YYYY-MM');SQL Server 场景
若year字段存储数字格式的月份:SELECT * FROM table_1 WHERE year = MONTH(GETDATE());若
year字段存储YYYY-MM格式的年月字符串:SELECT * FROM table_1 WHERE year = FORMAT(GETDATE(), 'yyyy-MM');Oracle 场景
若year字段存储数字格式的月份:SELECT * FROM table_1 WHERE year = EXTRACT(MONTH FROM SYSDATE);若
year字段存储YYYY-MM格式的年月字符串:SELECT * FROM table_1 WHERE year = TO_CHAR(SYSDATE, 'YYYY-MM');
如果需要筛选上个月的数据,只需要对当前日期做偏移即可,比如MySQL场景下取上月月份可以写为MONTH(DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)),其他数据库也有对应的日期偏移函数,按需调整即可。
内容的提问来源于stack exchange,提问作者Sayyam
相关产品推荐
相关产品推荐

