如何在执行 LOAD DATA INFILE 时将 VARCHAR 日期转换为标准 MYSQL 日期格式
How to convert VARCHAR date to a standard MYSQL date format when doing LOAD DATA INFILE
在我的 table 中,我有一整列都有 varchar
日期,这是它的样子:2/1/2020 02:30:00
(日期是 m/d/yyyy)我想要它转换为标准 MySQL 日期格式 (yyyy-mm-dd
) 或者如果可能的话可能是自定义日期格式版本。如果可能的话,我还想删除时间 (02:30:00)。是否有任何命令可以让我在终端上 运行 将整个列或导入到数据库中,从 .xls 文件格式转换为 .sql 文件格式。另一件事是在 MySQL 中不可能,也许 PHP 中有一种方法可以转换或操作上述数据。谢谢。
此外,也许还有一种方法可以将时间转换为标准 MySQL 时间格式。
我不确定如何更改我的问题,这里有一些额外的数据。
这是显示警告的结果,我不确定这是怎么回事,我做错了什么,但在给定的例子中它工作正常。我会继续尝试,但我很满意我得到了两个非常好的建议和方法,一个在 mysql 一侧,一个在 php 一侧。谢谢。
使用 strtotime
和 date
函数将此日期处理为 MySQL 日期格式:
$db_date = "2/1/2020 02:30:00";
$new_date = date( "Y-m-d" , strtotime($db_date) );
解释:
strtotime($db_date)
这会将字符串日期转换为 unix 时间戳
date( "Y-m-d" , .... )
这会将 unix 时间戳转换为 YYYY-MM-DD (Y-m-d
) 格式
您可以直接在 MySQL 中进行翻译,使用 STR_TO_DATE
to translate the string into a DATETIME
value, and then DATE
and TIME
提取日期和时间部分:
SELECT DATE(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y')) AS date,
TIME(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y %H:%i:%s')) AS time
输出:
date time
2020-02-01 02:30:00
LOAD DATA INFILE ...
(col1, col2, @str)
SET col3 = STR_TO_DATE(@str, '%c/%e/%Y %H:%i:%s');
也就是将传入的字符串存储到一个@变量中,然后在LOAD DATA
语句中进行转换。
在我的 table 中,我有一整列都有 varchar
日期,这是它的样子:2/1/2020 02:30:00
(日期是 m/d/yyyy)我想要它转换为标准 MySQL 日期格式 (yyyy-mm-dd
) 或者如果可能的话可能是自定义日期格式版本。如果可能的话,我还想删除时间 (02:30:00)。是否有任何命令可以让我在终端上 运行 将整个列或导入到数据库中,从 .xls 文件格式转换为 .sql 文件格式。另一件事是在 MySQL 中不可能,也许 PHP 中有一种方法可以转换或操作上述数据。谢谢。
此外,也许还有一种方法可以将时间转换为标准 MySQL 时间格式。
我不确定如何更改我的问题,这里有一些额外的数据。
这是显示警告的结果,我不确定这是怎么回事,我做错了什么,但在给定的例子中它工作正常。我会继续尝试,但我很满意我得到了两个非常好的建议和方法,一个在 mysql 一侧,一个在 php 一侧。谢谢。
使用 strtotime
和 date
函数将此日期处理为 MySQL 日期格式:
$db_date = "2/1/2020 02:30:00";
$new_date = date( "Y-m-d" , strtotime($db_date) );
解释:
strtotime($db_date)
这会将字符串日期转换为 unix 时间戳
date( "Y-m-d" , .... )
这会将 unix 时间戳转换为 YYYY-MM-DD (Y-m-d
) 格式
您可以直接在 MySQL 中进行翻译,使用 STR_TO_DATE
to translate the string into a DATETIME
value, and then DATE
and TIME
提取日期和时间部分:
SELECT DATE(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y')) AS date,
TIME(STR_TO_DATE('2/1/2020 02:30:00', '%c/%e/%Y %H:%i:%s')) AS time
输出:
date time
2020-02-01 02:30:00
LOAD DATA INFILE ...
(col1, col2, @str)
SET col3 = STR_TO_DATE(@str, '%c/%e/%Y %H:%i:%s');
也就是将传入的字符串存储到一个@变量中,然后在LOAD DATA
语句中进行转换。