DATE_FORMAT 两次在 Where 子句中不起作用
DATE_FORMAT two times in Where Clause doesn't work
我想检查数据集是否早于当前月份 -1 天(因此,如果是 11 月 1 日,它应该仍早于 10 月)。这是我的 SQL:
SELECT *
FROM XY
WHERE DATE_FORMAT(calendar_day, '%Y-%m') <> DATE_FORMAT((CURRENT_DATE()-1, '%Y-%m');
但由于第二个DATE_FORMAT,它不起作用。如果我删除它,它会起作用,但它也会比较天数而不是月份。我该如何解决?
使用年月函数试试这个:
SELECT *
FROM XY
WHERE (year(calendar_day) <> year(CURRENT_DATE()-1))
and (month(calendar_day)<>month(CURRENT_DATE()-1))
I want to check if a dataset is older than the current month -1
不要在此类查询的列上使用 DATE_FORMAT()
。保留 "current date" 上的所有日期函数。列上的函数阻碍了优化。
我认为这符合您的要求:
SELECT *
FROM XY
WHERE calendar_day <= LAST_DAY(CURRENT_DATE() - interval 1 day - interval 1 month);
我想检查数据集是否早于当前月份 -1 天(因此,如果是 11 月 1 日,它应该仍早于 10 月)。这是我的 SQL:
SELECT *
FROM XY
WHERE DATE_FORMAT(calendar_day, '%Y-%m') <> DATE_FORMAT((CURRENT_DATE()-1, '%Y-%m');
但由于第二个DATE_FORMAT,它不起作用。如果我删除它,它会起作用,但它也会比较天数而不是月份。我该如何解决?
使用年月函数试试这个:
SELECT *
FROM XY
WHERE (year(calendar_day) <> year(CURRENT_DATE()-1))
and (month(calendar_day)<>month(CURRENT_DATE()-1))
I want to check if a dataset is older than the current month -1
不要在此类查询的列上使用 DATE_FORMAT()
。保留 "current date" 上的所有日期函数。列上的函数阻碍了优化。
我认为这符合您的要求:
SELECT *
FROM XY
WHERE calendar_day <= LAST_DAY(CURRENT_DATE() - interval 1 day - interval 1 month);