仅更新mysql DateTime字段中的时间

时间:2009-08-25 07:23:03

标签: sql mysql

如何只更新MySQL中已存在的DateTime字段中的时间?我希望日期保持不变。

12 个答案:

答案 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页面显示subtimedifftime

等功能

用于支持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