首页 > 解决方案 > 将 CSV 信息推送到表时,SQL DATE 类型变量为 NULL

问题描述

我有一个日期为“3/8/2018 9:05:00 AM”格式的 CSV 文件。

当日期被推入列类型为“varchar(30)”的表中时,它变为“3/8/2018 9:05”

当日期被推入列类型为“DATE”的表中时,它变为“0000-00-00”

我希望我的列采用 DATE 格式,以便我可以根据日期进行排序。我的 CSV 日期是否需要采用“YYYY-MM-DD”格式才能正常工作?

或者

有没有办法将我的 SQL 表中的“日期”格式更改为“mm/dd/yyy hh:mi:ss”或只是“mm/dd/yyyy”?

现在,我唯一的选择似乎是将日期按原样以 varchar 格式推送到 SQL 中,将我的所有日​​期提取并转换为“YYYY-MM-DD”格式并将它们存储在一个数组中,将我的列格式“更改”为“ DATE”,然后将我的格式化日期数组推回新更改的“DATE”列。

仍然是 SQL 的新手,因此将不胜感激任何帮助。

标签: phpmysqlsqldate

解决方案


  1. 将您的日期/记录转储到临时表(临时表)中

  2. 在 SELECT 语句中,使用 STR_TO_DATE 日期函数将字符串日期转换为实际日期,并将实际日期插入目标表,即 SELECT STR_TO_DATE('3/8/2018 9:05:00 AM', '%d/%m/ %Y %h:%i:%s %p');

详细信息:INSERT INTO 目标表 (date_col_name) SELECT STR_TO_DATE(date_col_name, '%d/%m/%Y %h:%i:%s %p') FROM temporary_table;

在此处获取有关日期函数的更多信息: https ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date


推荐阅读