选择距离到期日期时间为 3 天的记录

som*_*ser 2 mysql datetime date

我有一个包含datetime timestamp. 我正在寻找的是根据datetime timestamp.

这是我到目前为止所拥有的,尽管我认为它不正确:

    SELECT jobs.*,occupations.title
    FROM jobs
    LEFT JOIN occupations on occupations.id = jobs.occupation_id
    WHERE DATE_ADD(jobs.`date_created`,INTERVAL 27 DAY) = DATE(NOW())
Run Code Online (Sandbox Code Playgroud)

请帮忙 :)

Rol*_*DBA 5

如果date_created是 a DATE,请执行以下操作:

SELECT jobs.*,occupations.title
FROM jobs
LEFT JOIN occupations on occupations.id = jobs.occupation_id
WHERE jobs.`date_created` = DATE(NOW() - INTERVAL 27 DAY);
Run Code Online (Sandbox Code Playgroud)

如果date_createdDATETIMETIMESTAMP并且时间部分是'00:00:00',请执行以下操作:

SELECT jobs.*,occupations.title
FROM jobs
LEFT JOIN occupations on occupations.id = jobs.occupation_id
WHERE jobs.`date_created` >= DATE(NOW() - INTERVAL 27 DAY) + INTERVAL 0 SECOND;
Run Code Online (Sandbox Code Playgroud)

这些查询在性能方面比问题中的查询要好,因为WHERE我的查询的子句将引发索引范围扫描,而问题中的WHERE子句将引发全表扫描(即使date_created已建立索引)。

如果jobs表上没有索引date_created,则创建一个

ALTER TABLE jobs ADD INDEX (date_created);
Run Code Online (Sandbox Code Playgroud)

试一试 !!