mysql - MySQL 中 TIMESTAMP 的确切最大值是多少?
问题描述
该文件指出 -
TIMESTAMP 值的范围是“1970-01-01 00:00:01.000000”到“2038-01-19 03:14:07.999999”
但是当我尝试输入最大值时得到这个:
mysql> insert into integration_table (`TIMESTAMP`) VALUES ('2038-01-19 03:14:07.999999');
ERROR 1292 (22007): Incorrect datetime value: '2038-01-19 03:14:07.999999' for column 'TIMESTAMP' at row 1
如果我逐渐减小该值,则可以使用的最大值是'2038-01-19 03:14:07.499999'
- MySQL 版本是
mysql Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
(在 Docker 中运行) - 列定义是
`TIMESTAMP` timestamp NULL DEFAULT NULL,
- 表定义是
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
我知道 MySQL 从 5.6.4 版开始支持微秒,所以这不是问题。
我是误解了什么还是这是一些配置问题?
谢谢
解决方案
将列定义为TIMESTAMP
意味着它不支持微秒,因此 0.5 及以上将被四舍五入,这使得该值超出范围。
该列需要定义为TIMESTAMP(6)
支持 6 位微秒。
推荐阅读
- ruby-on-rails - 如何在 ruby on rails 路由约束中添加百分比
- sql - 如何在不更新数据表的情况下查看程序的执行结果?
- javascript - 无法通过 javascript 设置我的表格的边框
- c# - 将数据集转换为带有嵌套重复 xml 的 xml 字符串,反之亦然
- php - Woocommerce 删除产品标题上的链接并将其替换为链接:外部产品/从属关系> 产品 URL
- php - 在这种情况下如何使用“和”“如果”
- c - 如何通过 makefile 将 lex.yy.c 与 main.c 链接?
- ckeditor5 - 在 downcast 调度程序上更新模型更改视图
- sql - 将逗号添加到单独的电子邮件地址
- c++ - 将 biginteger 二进制字符串 128 位转换为数组 int [4] 时出现问题