实际上我使用的是MySql 5.6.4版本。但问题是MySQL以“hh:mm:ss”格式(或“hhh:mm:ss”格式)检索并显示TIME
值对于较大的小时值)。
TIME
值的范围可能是“-838:59:59”到“838:59:59”。小时部分可能如此之大,因为 TIME
类型不仅可以用来表示一天中的某个时间(必须小于 24 小时),还可以用来表示耗时或两个事件之间的时间间隔(可能远大于 24 小时,甚至是负值)。
我想限制 mysql 5.6.4 版本中的 TIME
数据类型仅保留到 24:00:00 小时,因此如果将插入大于 24:00:00 的时间,那么它将显示错误消息。
我为此在谷歌上搜索了很多,但我没有找到任何东西,尽管我有点困惑......我只是想知道我该怎么做?
Insert into exp1.mock_table (reviewTime, created_dt) VALUES ('37:00:00', NOW());
Insert into exp1.mock_table (reviewTime, created_dt) VALUES ('22:01:53', NOW());
alter table exp1.mock_table modify reviewTime time(0) , add check (extract(hour from reviewTime) between 0 and 24);
最佳答案
如果您使用 MySQL 8+,那么您可以在定义表时使用检查约束来处理此问题:
CREATE TABLE mock_table (
reviewTime time CHECK (HOUR(time) < 24)
created_dt datetime
);
从技术上讲,24 小时制不支持 24:00:00
,因为 23:59:59
自动回绕到 00:00:00第二天的
。
关于mysql - 限制mysql中的TIME数据类型仅保留到24 :00:00 hrs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641725/