我有一个表placed_order
,其中包含列order_time
(时间戳),estimated_delivery_time
(时间戳)等等。在第二个表addresses
中,有zone
列(其他列除外)。
zone
列是一个ENUM字段,包含值“ Zone 1”,“ Zone 2”,“ Zone 3”。
现在,我需要计算estimated_delivery_time
。视区域而定,是order_time
加10分钟(1区),15分钟(2区)或20分钟(3区)。
我已经找到了如何通过手动添加分钟数来计算estimated_delivery_time
的方法:
UPDATE `placed_order`
SET `estimated_delivery_time` = DATE_ADD(`order_time`, INTERVAL 10 MINUTE)
WHERE placed_order_id = 9;
但是我绝对很难找到一种解决方案,如何根据区域来计算estimated_delivery_time
。我已经使用SELECT IF和CASE子句进行了尝试,但是找不到方法。有什么建议吗?
答案 0 :(得分:0)
您可以使用http://www.ampps.com/wiki/How_to_change_php_version更新estimated_delivery_time
。尝试以下查询:
UPDATE `placed_order` AS po
JOIN `addresses` AS addr ON addr.customer_id = po.customer_id
SET po.estimated_delivery_time = CASE addr.zone
WHEN 'Zone 1'
THEN DATE_ADD(po.order_time, INTERVAL 10 MINUTE)
WHEN 'Zone 2'
THEN DATE_ADD(po.order_time, INTERVAL 15 MINUTE)
WHEN 'Zone 3'
THEN DATE_ADD(po.order_time, INTERVAL 20 MINUTE)
END