我有一个名为calendar的表,其中的DateTo列
格式为2014-02-19T16:00:00(varchar,无法更改)
我想将时间设为13:00

我试过了

UPDATE calendar
SET DateTo = (SUBSTRING(DateTo FROM 1 FOR 11) + '13:00')
WHERE SUBSTRING(DateFrom FROM 1 FOR 10) = '2014-02-19'


认为这会给我:

2014-02-19T13:00

但是它返回2027?

最佳答案

你可以做

update
calendar
set DateTo = concat(
  substring_index(DateTo,'T',1),'T','13:00'
)
where substring_index(DateTo,'T',1) = '2014-02-19'
;


DEMO

正如MatBailie建议的那样

where substring_index(DateTo,'T',1) = '2014-02-19'


更好用

WHERE DateTo LIKE '2014-02-19T%'

如果DateTo上有索引,这将明显更快

关于mysql - 想要一个SQL来更新一个SUBSTRING,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23406133/

10-12 16:27