我想基于驻留在日期范围内的另一列的第一个索引值来更新状态。正确的使用方法是什么。
UPDATE `store_results`
SET `results_status` = "unpublished"
WHERE CONCAT(SUBSTRING_INDEX(`results_trigger_on`,' ',1) AS resultdate
FROM `store_results` HAVING resultdate BETWEEN '15/09/2018' AND '20/09/2018')
SELECT *,CONCAT(SUBSTRING_INDEX(`store_results_trigger_on`,' ',1)) AS resultdate FROM `store_results` WHERE `store_results_status` = '$status' HAVING resultdate BETWEEN '$startdate' AND '$enddate' ORDER BY `store_results_id` DESC
这似乎不起作用。它有什么问题或需要修改什么!还包括有效的选择声明
答案 0 :(得分:2)
以下更新应该有效:
UPDATE store_results
SET results_status = 'unpublished'
WHERE
STR_TO_DATE(SUBSTRING_INDEX(results_trigger_on, ' ', 1), '%d/%m/%Y') BETWEEN
'2018-09-15' AND '2018-09-20';
您应该避免在文本中存储未归一化的日期信息,以免出现此类混乱的查询。