使用带有SUBSTRING的UPDATE语句进行结果更新

时间:2018-09-21 07:49:47

标签: php mysql mysqli

我想基于驻留在日期范围内的另一列的第一个索引值来更新状态。正确的使用方法是什么。

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

这似乎不起作用。它有什么问题或需要修改什么!还包括有效的选择声明

1 个答案:

答案 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';

您应该避免在文本中存储未归一化的日期信息,以免出现此类混乱的查询。