使用默认日期格式创建 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
- 这里所有的nums都是Float数据类型。
- 这里csv文件中date的日期格式是dd-MM-yyyy。
因此,当在数据库中加载完整文件时,我将日期存储为 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')
我正在使用加载命令将 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
- 这里所有的nums都是Float数据类型。
- 这里csv文件中date的日期格式是dd-MM-yyyy。
因此,当在数据库中加载完整文件时,我将日期存储为 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')