mysql - 限制mysql中的TIME数据类型仅保留到24 :00:00 hrs

标签 mysql

实际上我使用的是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/

相关文章:

mysql - 从MySql生成的sql脚本理解表关系

mysql - phpass 将输入密码与存储的密码进行匹配

mysql - MAMP:MySQL 无法启动

php - 查找 SQL 语法中的错误

php - 如何选择 MySQL 中最常见的值?

mysql - Compex MySQL Left Join 使用元表中的多个条目

php - 连接错误MySQL

php - 使用类表继承从存储库中获取子类

php - 如何使用 PHP 插入到 Mysql 数据库的链接

mysql - 在mySQL中查找每个组中的成员总数