mysql - 如何仅更新 MySQL 中 DATETIME 字段的小时数?

标签 mysql sql datetime hour date-manipulation

我想更新一个 DateTime 列,它只更改时间而不修改任何其他内容。我不能用来添加间隔,因为值都不同。也有许多不同的日期。因此需要将确切所需日期的小时更改为 where 条件。

例如:

*************************************************
**        Before       *|*         After       **
************************|************************
** 2017-07-24 19:06:15 *|* 2017-07-24 15:06:15 **
** 2017-07-24 17:12:23 *|* 2017-07-24 15:12:23 **
** 2017-07-24 23:00:03 *|* 2017-07-24 15:00:03 **
** 2017-07-24 20:33:56 *|* 2017-07-24 15:33:56 **
** 2017-07-24 18:19:31 *|* 2017-07-24 15:19:31 **
** 2017-07-24 16:43:47 *|* 2017-07-24 15:43:47 **
*************************************************

只想使用 MySQL 查询而不使用任何编程语言。

最佳答案

您可以使用 DATE_FORMAT()函数和“硬编码”小时:

UPDATE some_table SET dt = DATE_FORMAT(dt, '%Y-%m-%d 15:%i:%s');

演示:http://rextester.com/RJESF70894

如果你想在准备好的语句中绑定(bind)小时作为参数,你可以将它与 REPLACE() 结合起来:

UPDATE some_table SET dt = DATE_FORMAT(dt, REPLACE('%Y-%m-%d %H:%i:%s', '%H', ?))

演示:http://rextester.com/OHUKF73552

关于mysql - 如何仅更新 MySQL 中 DATETIME 字段的小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44898491/

相关文章:

mysql - 选择不同值多列

mysql - 如何从功能上访问 SQL 表的表名?

r - 将字符串解析为日期时间时遇到问题

ASP.NET MVC Controller.Json 日期时间序列化 vs NewtonSoft Json 日期时间序列化

mysql - 如何使用 row_number、lag/lead、join SQL 解决问题

mysql - 计算两列的差异并存储到另一列

在 MySQL JSON 数据中使用 BETWEEN 进行 mysql 日期比较

php - PDO 查询不起作用

php - 从多个表中删除不起作用

c# - 无法更改以 "/"作为分隔符的日期格式,如果默认系统日期格式以 "-"作为日期分隔符