MySQL包含IF的UPDATE
2016/08/05
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))
场景描述:
- 需要更新table内的a_datetime字段
- a_datetime字段需要根据b字段时间来确认
- 当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)