Prm*_*rmk 9 mysql timestamp mysqlimport
虽然,尝试将.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
Run Code Online (Sandbox Code Playgroud)
我仅在1980年以前的日期遇到此错误.仅在我尝试通过import语句或WorkBench导入转储时才会发生此错误.如果我单独执行语句,它可以正常工作.这是表结构和insert语句
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);
Run Code Online (Sandbox Code Playgroud)
VMa*_*Mai 16
Batchdate不是DATETIME列,而是TIMESTAMP列.TIMESTAMP的范围不包括此日期:
CREATE TABLE `BatchEntry` (
`BatchNo` INTEGER NOT NULL AUTO_INCREMENT,
`BatchDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- it's TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
并且错误消息是
日期时间值不正确:'1936-01-31 00:00:00'
这比'1970-01-01 00:00:01'旧,超出了数据类型的范围 TIMESTAMP
TIMESTAMP数据类型用于包含日期和时间部分的值.TIMESTAMP的范围为'1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'UTC.
解
将数据类型更改为DATETIME
.
CREATE TABLE `BatchEntry` (
`BatchNo` INTEGER NOT NULL AUTO_INCREMENT,
`BatchDate` DATETIME DEFAULT CURRENT_TIMESTAMP,
[...]
Run Code Online (Sandbox Code Playgroud)
如果您使用的是MySQL 5.6.5或更高版本,则可以将数据类型更改为DATETIME,因为此版本DATETIME也支持自动初始化.您似乎使用的是较新版本,因为您使用了多个具有自动初始化功能的此类列.此功能已同时添加.
从MySQL 5.6.5开始,TIMESTAMP和DATETIME列可以自动初始化并更新为当前日期和时间(即当前时间戳).在5.6.5之前,这仅适用于TIMESTAMP,并且每个表最多只有一个TIMESTAMP列.
注意
对于20世纪70年代的日期值,它也会起作用.
归档时间: |
|
查看次数: |
17013 次 |
最近记录: |