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)
请帮忙 :)
如果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_created是DATETIME或TIMESTAMP并且时间部分是'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)
试一试 !!