mysql - 想要一个 sql 来更新子字符串

标签 mysql sql phpmyadmin

我有一个名为 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 来更新子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406133/

相关文章:

mysql - 如何在数据库中为用户创建表

mysql - SQL - 从嵌套结构中获取第一级节点

sql - T-SQL 不同计数查询...可以使用 EXISTS 或其他方式对其进行优化吗?

mysql - #1005 - 无法创建表(errno 150)

php - 没有密码无法以 root 身份登录到 phpmyadmin

mysql - 如何从 mysql 导出 4.5 GB 表?

php - Laravel-4 : how to use queues to create a daemon

sql - 同一张表中的mysql触发器

MySQL 在查询中重复 COUNT

mysql - 从 mysql 表中获取 json 格式的所有行