如何只更新MySQL中已存在的DateTime字段中的时间?我希望日期保持不变。
答案 0 :(得分:50)
试试这个:
UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid;
答案 1 :(得分:12)
试试这个:
UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56');
答案 2 :(得分:4)
我已经用这种方式解决了:
UPDATE table
SET myDateTime = CONCAT_WS(' ',DATE(myDateTime), CURTIME())
WHERE id = @id;
显然你应该用你想要的时间改变CURTIME()
。
答案 3 :(得分:3)
UPDATE myTable
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan)
WHERE id = @id;
记录MySQl日期函数MySQL docs
答案 4 :(得分:1)
UPDATE myTable
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan)
WHERE id = @id;
有关函数的确切语法,请参阅this。
答案 5 :(得分:1)
试试这个:
UPDATE sms
SET entry_period_end_date= entry_period_end_date+INTERVAL 6 Hour
WHERE TIME(entry_period_end_date) = '06:00:00';
答案 6 :(得分:0)
UPDATE `table`
SET time = ADDTIME(time, INTERVAL 13 Hour);
答案 7 :(得分:0)
嗯,确切地说你要求的是不可能的。日期和时间组件无法单独更新,因此您必须从现有组件计算新的DateTime值,以便可以替换整个值。
答案 8 :(得分:0)
MySQL DEV页面显示subtime
和difftime
用于支持3小时内所有帖子的时间的示例代码:
UPDATE tablepost SET datepost = SUBTIME( datepost , '0 3:0:0' );
请注意,值0不会改变相应的字段。注意这段代码,先用select来测试这些功能。
参考:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime
答案 9 :(得分:0)
假设你有一个DATE字段和TIME字段,并想把时间注入日期,试试这个:
UPDATE mytable
SET mydatefield = ADDTIME( DATE_FORMAT(mydatefield,'%Y-%m-%d 00:00:00'), mydatefield)
WHERE myid = ...
答案 10 :(得分:0)
我通过以下方式使用了 ADDTIME
在我的云服务器中,以前的DateTime设置为UTC,但是在将DateTime更改为Asia / Kolkata后,即UTC 5:30,我希望在数据库表中也能反映出来。
我想在5小时30分钟之前更新created_at和Updated_at列。我做了以下
更新表的所有行
UPDATE
products
SET
created_at = ADDTIME(created_at, '5:30:0'),
updated_at = ADDTIME(updated_at, '5:30:0')
如果要更新所有记录,则可以省略WHERE条件,但是由于我的新记录已使用适当的值更新。因此,只有我ID小于2500的行必须更新
UPDATE
products
SET
created_at = ADDTIME(created_at, '5:30:0'),
updated_at = ADDTIME(updated_at, '5:30:0')
WHERE
id < 2500;
答案 11 :(得分:0)
这帮助了我。我首先将时间转换为分钟:150:2:30。
UPDATE lesson SET starts_at = DATE_ADD(Date(starts_at), INTERVAL 150 MINUTE)
分钟对我来说足够准确,尽管您可以使用其他单位:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-add