php - 日期时间值不正确

标签 php mysql linux

我有表格chart_data:

CREATE TABLE `chart_data` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `type` ENUM('BID', 'ASK') NOT NULL,
    `volume` FLOAT UNSIGNED NOT NULL,
    `tokens` FLOAT UNSIGNED NOT NULL,
    `create_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `id_UNIQUE` (`id`)
)  ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=LATIN1;

当我插入一些记录时发生错误。例如:

# OK:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 02:05:01');
# Error (+1h):
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 03:05:01');
# Error:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 03:59:59');
# OK:
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-03-26 04:05:01');
# OK (+1d):
INSERT INTO `chart_data` (`type`, `volume`, `tokens`, `create_at`) VALUES ('BID', '1', '1', '2017-04-26 03:05:01');

据我了解,该错误仅发生在 2017-03-263 am

错误堆栈跟踪:

Executing:
UPDATE `gdmv`.`chart_data` SET `create_at`='2017-03-26 03:05:01' WHERE `id`='3';

Operation failed: std::exception
ERROR 1292: 1292: Incorrect datetime value: '2017-03-26 03:05:01' for column 'create_at' at row 1
SQL Statement:
UPDATE `gdmv`.`chart_data` SET `create_at`='2017-03-26 03:05:01' WHERE `id`='3'

可能是什么问题?

我的环境:

  • mysql 版本 14.14 Distrib 5.7.15,适用于 Linux (x86_64)
  • PHP 5.6.26 (cli)(构建时间:2016 年 9 月 15 日 15:07:33)
  • Red Hat Enterprise Linux Server 5.11 版(Tikanga)

最佳答案

您尝试输入的格式是日期时间格式,因此您需要在 sql 模式中将时间戳更改为日期时间。

因此你需要改变你的表:

ALTER TABLE chart_data CHANGE create_at datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'

或者如果您更喜欢完整模式

CREATE TABLE `chart_data` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `type` ENUM('BID', 'ASK') NOT NULL,
    `volume` FLOAT UNSIGNED NOT NULL,
    `tokens` FLOAT UNSIGNED NOT NULL,
    `create_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `id_UNIQUE` (`id`)
)  ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=LATIN1;

关于php - 日期时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44453880/

相关文章:

linux - 从哪里获得完整的联机帮助页

php - Symfony2 表单 - 如何隐藏字段引用父对象

php - 将 PHP 变量传递给 Javascript 函数(特定代码错误)

php - wordpress 数据库的自动同步需要更新它

MySQL 使用递增变量更新字段

c - 关于加载可执行文件到内存的问题

php - wordpress 中的背景音乐,带有 ON 和 OFF 手册

php - Paypal Restful - 无法解析主机

mysql - 我有一个 sql 查询,用于在特定日期之后查找最近的空闲时间。我怎样才能让它也在此日期之前查找日期?

linux - 如何跟踪 Linux 内核中网络子系统的内存使用情况?