我想检查一个数据集是否比当前的月份(1天)旧(因此,如果是11月1日,它应该仍然比10月份旧)。这是我的sql:
SELECT *
FROM XY
WHERE DATE_FORMAT(calendar_day, '%Y-%m') <> DATE_FORMAT((CURRENT_DATE()-1, '%Y-%m');
但由于第二个日期格式,它不起作用。如果我把它去掉,它会起作用,但它也会比较日子,而不是月份。我该怎么解决这个问题?
我想检查一个数据集是否比当前的月份(1天)旧(因此,如果是11月1日,它应该仍然比10月份旧)。这是我的sql:
SELECT *
FROM XY
WHERE DATE_FORMAT(calendar_day, '%Y-%m') <> DATE_FORMAT((CURRENT_DATE()-1, '%Y-%m');
但由于第二个日期格式,它不起作用。如果我把它去掉,它会起作用,但它也会比较日子,而不是月份。我该怎么解决这个问题?
2条答案
按热度按时间6ovsh4lw1#
我想检查数据集是否早于当前月份-1
不要使用
DATE_FORMAT()
在该类型查询的列上。将所有日期函数保持在“当前日期”。列上的函数阻碍了优化。我想这正是你想要的:
a8jjtwal2#
尝试使用年和月函数: