mysql - DATE_FORMAT 两次在 Where 子句中不起作用

标签 mysql sql date-format

我想检查数据集是否早于当前月份 -1 天(因此,如果它是 11 月的第一天,它应该仍然早于 10 月)。这是我的 SQL:

SELECT *
FROM XY
WHERE DATE_FORMAT(calendar_day, '%Y-%m') <> DATE_FORMAT((CURRENT_DATE()-1, '%Y-%m');

但由于第二个 DATE_FORMAT 而不起作用。如果我删除它,它会起作用,但它也会比较天数而不是月份。我该如何解决这个问题?

最佳答案

I want to check if a dataset is older than the current month -1

不要在此类查询的列上使用 DATE_FORMAT()。将所有日期函数保留在“当前日期”。列上的函数会阻碍优化。

我认为这可以满足您的需求:

SELECT *
FROM XY
WHERE calendar_day <= LAST_DAY(CURRENT_DATE() - interval 1 day - interval 1 month);

关于mysql - DATE_FORMAT 两次在 Where 子句中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536619/

相关文章:

php - 查询构建器不插入时间戳

php - 从我的论坛中获取他们在 medoo 中的子论坛的所有主题

mysql - 在数据库创建方面需要帮助

mysql - DATE_SUB 以特定格式返回日期

c# - 如何从表或结果集中获取列名和其他元数据

MySQL 表自连接返回太多行

mysql - 比较并连接多个表,但仅显示是否存在关系

sql - 使用 BY TIMESTAMP 进行滚动窗口的 Azure 流分析查询在测试中工作正常,但在运行作业结果中关闭

javascript - 未知日期格式(7 位数字)

java - 为什么 string to date 和 back to string 会导致两个不同的字符串?