在MYSQL中添加日期并检查NULL值

时间:2012-02-06 00:31:47

标签: mysql sql

我一直试图找出一个可以执行以下操作的查询:

  1. 检查last_service条记录,并将基于日期的delivery_frequency记录添加到mysql中的next_service日期字段。
  2. 但是,如果last_serviceNULLEmpty,请将last_service更新为今天的日期,然后再执行第1步。
  3. 我知道如何执行以下查询的第一步:

    UPDATE events SET next_service = DATE_ADD(last_service,INTERVAL 14 DAY) WHERE order_product_id = 3;
    

    但有点我发现第二步比较棘手。有人可以告诉我该怎么做吗?

    我正在使用PHP消费这些,但我不想用PHP进行双重查询或其他事情处理这部分。

    您可以按照以下方式思考我要找的内容:

    UPDATE events SET next_service = IF last_service IS NOT NULL OR '' THEN
    DATE_ADD(last_service,INTERVAL 14 DAY) ELSE SET last_service = CURRENT_DATE AND
    DATE_ADD(last_service,INTERVAL 14 DAY) END IF WHERE order_product_id = 3;
    

1 个答案:

答案 0 :(得分:4)

UPDATE events
SET
   last_service = coalesce(last_service, CURRENT_DATE),
   next_service = DATE_ADD(coalesce(last_service, CURRENT_DATE), INTERVAL 14 DAY)
WHERE order_product_id = 3;

Coalesce返回第一个非空值,以便

coalesce('2011-12-31', CURRENT_DATE)

返回2011-12-31

coalesce(null, CURRENT_DATE)

返回2012-02-06

CURRENT_DATE