如何在mysql中存储大于24小时的时间?

piah890a  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(577)

我需要创建一个列(例如 idletime )它将存储小于或大于24小时的时间值。当我尝试插入大于24的值(例如“80:00:00”、“129:23:12”等)时,得到以下错误代码:

java.sql.SQLException: Illegal hour value '80' for java.sql.Time type in value '80:00:00.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
.....

我在互联网上搜索发现,时间数据类型的范围是从00:00:00到23:59:59,而不是24:00:00。
有什么办法可以解决我的问题吗?我正在存储过程中执行此插入查询。

anhgbhbe

anhgbhbe1#

由于异常“java.sql.sqlexception”的性质,您的sql客户机似乎有问题。
进入一个空的控制台或另一个sqlclient并尝试执行您试图执行的操作
例如:

CREATE Table mytimetable (testtime TIME);

Insert into mytimetable values ('1:1:1'),('080:1:1'),('80:1:1');

select * from mytimetable ;
01:01:01
80:01:01
80:01:01

mysql使用hhh:mm:ss'格式,大于24小时。更多信息请参见文档

gdx19jrr

gdx19jrr2#

我想我理解这个用例,但是我不确定我会选择使用时间数据类型来解决这个问题。它也可以是某种int数据类型,并以秒为单位命名为空闲时间
如果需要更精确,也可以选择毫秒。

yv5phkfx

yv5phkfx3#

在mysql中,您可以存储 80:00:00 为了 time 数据类型。

CREATE TABLE `test_time` (
  `id` int(11) NOT NULL,
  `time` time DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

使用查询获取日期时间时:

SELECT TIMESTAMP(`time`) FROM `test_time`

输出:

TIMESTAMP(`time`)    
---------------------
2018-04-22T08:00:00Z

我注意到当以上述格式存储时,存储时间将增加80小时。例如:
如果您存储了80小时,mysql所做的就是设置当前时间+您的输入。当您要检查添加时的日期和时间 80:00:00 它将显示上述输出,也可以存储最大值 838:59:59 小时。
sql小提琴

相关问题