Mysql 将datetime列转换为24小时格式

Mysql 将datetime列转换为24小时格式,mysql,datetime,Mysql,Datetime,我有一个名为schedule_time(datetime)format的列。我想把时间转换成24小时 2016-03-08 03:00:00 to 2016-03-08 15:00:00 请注意,日期时间值始终以24小时格式()存储。没有上午/下午。 但是,当您想要显示这些值时,有 函数,它将根据您的需要格式化值,包括AM/PM: select DATE_FORMAT(schedule_time, '%Y-%m-%d %h:%i:%s %p') from t1; 这将给出2016-03-08

我有一个名为schedule_time(datetime)format的列。我想把时间转换成24小时

2016-03-08 03:00:00 to 2016-03-08 15:00:00

请注意,日期时间值始终以24小时格式()存储。没有上午/下午。 但是,当您想要显示这些值时,有 函数,它将根据您的需要格式化值,包括AM/PM:

select DATE_FORMAT(schedule_time, '%Y-%m-%d %h:%i:%s %p') from t1;
这将给出
2016-03-08 03:00:00 AM
2016-03-08 03:00:00 PM
。但数据库中的值仍然相同,为24小时格式

如果增加12小时可以解决您的问题,您可以这样做:

start transaction;

update t1 set schedule_time = date_add(schedule_time, interval 12 hour); 
select * from t1; -- verify!!!

rollback;
-- or commit;
我把它放在一个事务中,以便您可以首先验证您的结果。如果错误,只需回滚事务(前提是使用InnoDB表)。如果您没有事务(或对它们感到不舒服),可以使用
date\u sub
而不是
date\u add
撤消更改

但请注意:这不会从12h格式更改为24h格式,它只会在所有
计划时间值中增加12小时。

使用MySQL的功能

格式字符串将为“%Y-%m-%d%T

选择具有24小时时间的当前日期:

mysql>选择日期\格式(NOW(),“%Y-%m-%d%T”)与现在一样
+---------------------+
|现在|
+---------------------+
| 2016-03-08 20:47:04 |
+---------------------+
一行一组(0.00秒)

从表中选择24小时的日期:

mysql>从test.comments中选择日期格式(`created_at`,'%Y-%m-%d%T');
+---------------------+
|创建于|
+---------------------+
| 2016-02-25 16:32:12 |
+---------------------+
一行一组(0.00秒)

你怎么知道
03:00:00
的真正意思是
15:00:00
?仅仅增加12个小时就能解决你的问题吗?根据docs:MySQL以“YYYY-MM-DD HH:MM:SS”格式检索和显示日期时间值,因此在给定相同格式时,使用DATE_格式不会改变任何内容。我不确定你的意思。你把字符串类型的日期和日期时间类型的日期混淆了吗?这不会像我经常做的那样让我感到惊讶。但是有问题的专栏,schedule_time,已经是DATETIME(OP写的)。