mysql - MYSQL查询重复具有不同的主键值?
问题描述
我试图在我的 mysql 数据库上执行以下查询:
INSERT INTO `adabtc` (`time`, `open`, `high`, `low`, `close`, `volume`) VALUES
('2018-03-30 02:00:00','0.00002002', '0.00002031', '0.00002000', '0.00002011', '105.88731690')
我收到以下错误:
1062 - 键“PRIMARY”的重复条目“2018-03-30 03:00:00”
请注意,查询中的日期与重复的日期不同。
创建表:
CREATE TABLE `adabtc` (
`time` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`open` double NOT NULL,
`high` double NOT NULL,
`low` double NOT NULL,
`close` double NOT NULL,
`volume` double NOT NULL,
PRIMARY KEY (`time`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
还运行查询:
SELECT * FROM `adabtc` WHERE time BETWEEN '2018-03-30 01:00:00' AND '2018-03-30 03:00:00'
给我以下结果:
2018-03-30 01:00:00 0.00001983 0.00002003 0.00001968 0.00002001 110.25848914
2018-03-30 03:00:00 0.00002002 0.00002031 0.00002 0.00002011 105.8873169
已解决: 将类型从时间戳更改为日期时间,问题已解决。谢谢@RaymondNijland
解决方案
我很确定这是一个时区问题。正如文档所解释的:
MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。
假设您的服务器与 UTC 相差一小时,这将解释输入值和错误消息之间的差异。
您需要考虑此偏移量。一种解决方案是以 UTC 格式提供时间戳。更好的解决方案是使用datetime
与时区无关的 。
推荐阅读
- excel - 如何在受保护的工作表上运行 vba?
- javascript - 在自定义类上非法调用 addEventListener.call(ob,...)
- python - 从按列值选择 SqlAlchemy 创建字典组
- vue.js - Nuxt 嵌套路由无法正确导航
- ios - Zendesk 聊天小部件未在基于 cordova 的 iOS 应用程序中显示,但在 Android 和 Web 中正确显示
- mongodb - 在 MongoDB 中,有没有办法更新许多文档并获取在一次调用中修改的文档?
- hadoop - hadoop 客户端可以利用机架感知的好处吗?
- javascript - React 组件在 react-pull-to-refresh 上失败
- android - Android分析器如何减少本机内存使用
- android - 一加设备面临连接超时问题