mysql包含if的update

UPDATE table SET a_datetime =
IF(DATE_FORMAT(b_datetime, '%H') > 18,
DATE_ADD(DATE(b_datetime), INTERVAL '2 20' DAY_HOUR),
DATE_ADD(DATE(b_datetime), INTERVAL '1 20' DAY_HOUR))

场景描述:

  1. 需要更新table内的a_datetime字段
  2. a_datetime字段需要根据b字段时间来确认
  3. 当b_datetime的hour > 18 的时候,将a_datetime设置为b_datetime后1天的20:00, 否则,将a_datetime设置为b_datetime后2天的20:00

IF:

IF(condition, condition is true, condition if false)

DATE_FORMAT:

--格式化日期, 代码里只取了小时的值
DATE_FORMAT(b_datetime, '%H')

DATE_ADD:

--DATE取当前值的日期,即取了b_datetime的0时
--DATE_ADD将第一个参数的日期增加了第二个参数对应的DAY_HOUR值
DATE_ADD(DATE(b_datetime), INTERVAL '2 20' DAY_HOUR)