Mysql 将datetime列转换为24小时格式
我有一个名为schedule_time(datetime)format的列。我想把时间转换成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
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写的)。