使用默认日期格式创建 table?

Create table with default dateformat?

我正在使用加载命令将 CSV 文件中的所有数据插入 mysql table。加载查询样本为:

LOAD DATA LOCAL INFILE 'C:\path\to\windows\file.CSV'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, fieldx);

文件中的数据格式如下:

FName || LName || num1 || num2 || num3|| num4 || num5 || date

因此,当在数据库中加载完整文件时,我将日期存储为 varchar,因为当我将它们存储在 DATE 数据类型中时我得到 0000-00-00。

现在插入数据后,我必须处理日期,但我无法获得排序的日期,因为它们存储为 Varchar。 有什么方法可以在创建 table 时指定默认日期格式。例如:

create table test (
mydates date(date : dd-mm-yyyy));

像这样。

或者谁能建议一种不同的方法来解决这个问题?

使用str_to_date 将字符串转换为日期时间对象并使用set 手动设置列的值。假设 fieldx 是您的日期字段:

LOAD DATA LOCAL INFILE 'C:\path\to\windows\file.CSV'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, @fieldx)
SET fieldx = str_to_date(@fieldx, "%d-%m-%Y");

看看manual page for load data for more information; and adjust the format string using this table

我建议使用"string to date"函数

STR_TO_DATE(table.datestring, '%m-%d-%Y')