- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
同时,尝试将 .sql 文件导入我的数据库时,其中一个插入语句出现以下错误 -
ERROR 1292 (22007) at line 31504: Incorrect datetime value: '1936-01-31 00:00:00' for column 'BatchDate' at row 1. Operation failed with exitcode 1
我只遇到早于 1980 年的日期的这个错误。它只在我尝试通过导入语句或通过 WorkBench 导入转储时发生。如果我单独执行该语句,它可以正常工作。这是表结构和插入语句
DROP TABLE IF EXISTS `BatchEntry`;
CREATE TABLE `BatchEntry` (
`BatchNo` INTEGER NOT NULL AUTO_INCREMENT,
`BatchDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`BTax_ID` DOUBLE NULL DEFAULT 0,
`BPayor_No` DOUBLE NULL DEFAULT 0,
`BBroker_No` DOUBLE NULL DEFAULT 0,
`BHam_Cont` VARCHAR(4),
`BInv_Org_Date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`BInv_Due_Date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`BDate_Adv` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`BRec_Amt` DECIMAL(19,4) DEFAULT 0,
`BPaymnt_Com` LONGTEXT,
`BTrans_Count` INTEGER DEFAULT 0,
`BPrefix` VARCHAR(10),
`BStartNumber` INTEGER DEFAULT 0,
`BSuffix` VARCHAR(10),
`BCreated` TINYINT(1) DEFAULT 0,
`BAdvMethod` INTEGER DEFAULT 0,
INDEX (`BPayor_No`),
INDEX (`BTax_ID`),
PRIMARY KEY (`BatchNo`)
) ENGINE=myisam DEFAULT CHARSET=utf8;
INSERT INTO `BatchEntry` (`BatchNo`, `BatchDate`, `BTax_ID`, `BPayor_No`, `BBroker_No`, `BHam_Cont`, `BInv_Org_Date`, `BInv_Due_Date`, `BDate_Adv`, `BRec_Amt`, `BPaymnt_Com`, `BTrans_Count`, `BPrefix`, `BStartNumber`, `BSuffix`, `BCreated`, `BAdvMethod`) VALUES (1396, '1936-01-31 00:00:00', 561986585, 4528, 749, 'BSR', '2005-12-30 00:00:00', '2006-01-30 00:00:00', '2006-01-31 00:00:00', 0, NULL, 14, 'MC', 24850, NULL, 1, 1);
最佳答案
Batchdate 不是 DATETIME 列而是 TIMESTAMP 列。 TIMESTAMP 的范围不包括此日期:
CREATE TABLE `BatchEntry` (
`BatchNo` INTEGER NOT NULL AUTO_INCREMENT,
`BatchDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- it's TIMESTAMP
错误信息是
Incorrect datetime value: '1936-01-31 00:00:00'
早于 '1970-01-01 00:00:01',超出数据类型 TIMESTAMP
的范围
The DATE, DATETIME, and TIMESTAMP Types
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
解决方案
将数据类型更改为DATETIME
。
CREATE TABLE `BatchEntry` (
`BatchNo` INTEGER NOT NULL AUTO_INCREMENT,
`BatchDate` DATETIME DEFAULT CURRENT_TIMESTAMP,
[...]
如果您使用的是 MySQL 5.6.5 或更新版本,那么您可以将数据类型更改为 DATETIME,因为此版本 DATETIME 也支持自动初始化。您似乎使用了较新的版本,因为您使用的是多个具有自动初始化功能的列。此功能是同时添加的。
Automatic Initialization and Updating for TIMESTAMP and DATETIME
As of MySQL 5.6.5, TIMESTAMP and DATETIME columns can be automatically initializated and updated to the current date and time (that is, the current timestamp). Before 5.6.5, this is true only for TIMESTAMP, and for at most one TIMESTAMP column per table.
注意
对于 1970 年代的日期值,它也适用。
关于MySQL 早于 1980 年的日期时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250846/
我有一个 javascript 函数,可以执行以下操作; 它将日期编辑框设置为与另一个日期编辑相同的日期。但是我希望它将 txt_Testin
我有一个输入框,类型为“时间”。我想将迟到时间 (23:00pm) 作为最小值,将早期时间 (6:00am) 作为最大值 - 创建一个 23pm - 6am 的范围。 (即中午 11 点、中午 12
使用 Joda 时间并获得类似以下行为的最简单方法是什么: public boolean check( DateTime checkTime ) { DateTime someTime = n
我想计算 updated_at 比 created_at 早 2 小时的记录。 代码 $teLang = $kentekens->where('updated_at', '>', 'created_a
我是一名优秀的程序员,十分优秀!