MySQL 将列中的日期与今天进行比较


MySQL compare dates in a column to today

我有一个包含大约 6000 条记录的表,其中有一个日期列,用于表示查询的截止日期。我需要将列中的日期与今天的日期进行比较,据我了解,这样做是这样的:

SELECT DATEDIFF(DATE_TO_COMPARE, CURDATE());

但是,我还有另一个要设置为该日期差异的同龄人。因此,对于每个日期,我需要进行比较,在列中插入差异difference_in_days,迭代到下一个日期并重复。

每当使用 AJAX 和 PHP/PDO 加载我网站上的某个页面时,我也会调用此函数

我的SQL知识不是那么广泛,我怎么能做到这一点。

表有点像

    field 1, field2, field 3, date_to_compare, field 4, field 5, difference_in_days       
    |       |       |       | 2016-04-20      |        |       |                   |
    |       |       |       | 2016-04-25      |        |       |                   |
    |       |       |       | 2016-04-22      |        |       |                   |
    |       |       |       | 2016-04-27      |        |       |                   |
    |       |       |       | 2016-04-29      |        |       |                   |

像你想做更新一样的桑德斯?

UPDATE table_name
SET difference_in_days = DATEDIFF(date_to_compare, CURDATE());

这会将表中的每个记录更新为当前日期的差异。

但是,如果您希望该列保持相关性,这将要求您每天运行更新。

替代方法:

如果您不经常查询此内容,则最好使用视图,该视图将在您每次查询时实时更新。

CREATE VIEW diff_view_name AS
SELECT *, DATEDIFF(date_to_compare, CURDATE()) AS difference_in_days
FROM table_name;

然后,您可以使用以下命令查询它:

SELECT * FROM diff_view_name;