gpt4 book ai didi

mysql - 当月、日、小时或分钟为 8 或 9 时,INSERT TIMESTAMP 或 DATETIME 失败

转载 作者:行者123 更新时间:2023-11-30 21:48:58 24 4
gpt4 key购买 nike

我在处理插入日期时间值时遇到了一个奇怪的问题。它发生在插入 DATETIME 或 TIMESTAMP 类型的列时,以及使用 STR_TO_DATE 函数时。

当月份、日期、小时或分钟为数字 8 或 9 时,数据库似乎无法正确解析。一些示例:

INSERT INTO test(date) VALUES("2018-01-07 10:08:47");

结果:

+----+---------------------+
| id | date |
+----+---------------------+
| 7 | 2018-01-07 10:00:00 |
+----+---------------------+

今天开始

INSERT INTO test(date) VALUES("2018-01-08 10:47:47");

结果:

+----+---------------------+
| id | date |
+----+---------------------+
| 3 | 2018-01-00 8:00:00 |
+----+---------------------+

月份也失败了:

INSERT INTO test(date) VALUES("2018-09-07 10:47:47");

结果:

+----+---------------------+
| id | date |
+----+---------------------+
| 9 | 2018-00-00 0:00:00 |
+----+---------------------+

当值不是 8 或 9 时插入成功:

INSERT INTO test(date) VALUES("2018-01-07 10:47:08")

结果:

+----+---------------------+
| id | date |
+----+---------------------+
| 8 | 2018-01-07 10:47:08 |
+----+---------------------+

这是表的描述:

+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | null | auto_increment |
| date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+

我还用 STR_TO_DATE 函数测试了这个问题,得到了相同的结果:

SELECT STR_TO_DATE("10/08/2018 7:47:25", "%d/%m/%Y %k:%i:%s");

+--------------------------------------------------------+
| STR_TO_DATE("10/08/2018 7:47:25", "%d/%m/%Y %k:%i:%s") |
+--------------------------------------------------------+
| 2018-00-00 0:00:00 |
+--------------------------------------------------------+

一些想法?我真的需要它以数据相关格式存储,而不是字符串。提前致谢

最佳答案

我不明白为什么您选择的日期类型是“时间戳”。为什么不能简单地使用“日期时间”?

如果你不能改变尝试INSERT INTO test(date) VALUES unix_timestamp("2018-09-07 10:47:47");

我在运行 MySQL 5.7.19 的 Windows 机器上创建了一个示例:

表定义:

CREATE TABLE `test_date` (
`id` INT NOT NULL AUTO_INCREMENT,
`date_field` DATETIME NULL,
PRIMARY KEY (`id`));

然后插入:

INSERT INTO test_date(date_field) VALUES("2018-09-07 10:47:47");

最终结果:

id  date_field
1 2018-09-07 10:47:47

关于mysql - 当月、日、小时或分钟为 8 或 9 时,INSERT TIMESTAMP 或 DATETIME 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48149288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com