如何更改MySQL日期格式?

时间:2017-01-11 19:32:28

标签: mysql date format mariadb

我正在通过XAMPP运行本地MariaDB服务器。我有~1000 LOC,看起来如下:

insert into jobs values(781,'13-01-2005',10006,1,2.5,1,4.00);

当我使用欧洲日期格式时,我不断收到错误:

Data truncation: Incorrect date value: '13-01-2005'

是否有可能修改日期格式,数据库正在使用它以便接受'DD-MM-YYYY'作为输入?

提前致谢

1 个答案:

答案 0 :(得分:1)

你可以用一点技巧转换它。

1)创建一个临时文件。像这样的表,其中日期存储为varchar

    CREATE TABLE `dateconv` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `datestr` varchar(32) DEFAULT NULL,
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL,
  `i3` double DEFAULT NULL,
  `i4` int(11) DEFAULT NULL,
  `i5` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=782 DEFAULT CHARSET=utf8;

2)插入所有数据

insert into dateconv values(781,'13-01-2005',10006,1,2.5,1,4.00);
...
insert into dateconv values(999,'13-01-2005',10006,1,2.5,1,4.00);

3)您可以在目的地表中选择或插入数据

显示:

SELECT 
    id, STR_TO_DATE(datestr, "%d-%m-%Y"),
    i1,i2,i3,i4,i5
FROM dateconv;

插入:

INSERT INTO jobs
SELECT 
    id, STR_TO_DATE(datestr, "%d-%m-%Y"),
    i1,i2,i3,i4,i5
FROM dateconv;

替代方式

围绕每个日期字符串转换函数 STR_TO_DATE ,如下所示:

insert into jobs values(781,STR_TO_DATE('13-01-2005', "%d-%m-%Y"),10006,1,2.5,1,4.00);