Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过php将带有日期的csv导入mysql_Php_Mysql_Date_Csv_Datetime - Fatal编程技术网

通过php将带有日期的csv导入mysql

通过php将带有日期的csv导入mysql,php,mysql,date,csv,datetime,Php,Mysql,Date,Csv,Datetime,我正试图用php将csv文件上传到我的mysql表中 我听说了inline命令,但问题是csv日期格式是dd/mm/yyyy,而mysql格式是yyyy-mm-dd 我几乎尝试了所有的Dateconvert函数,但都没有成功。总是在Mysql表上看到0000-00-00 如何正确转换 这是我最后一次尝试: ($date[0]是csv中的日期单元格。-26/05/2016,mysql中的第二列是日期) strotime等待输入格式 您需要拆分字符串,并从中创建一个Y-m-dfromat,或者您可以

我正试图用php将csv文件上传到我的mysql表中

我听说了
inline
命令,但问题是csv日期格式是
dd/mm/yyyy
,而mysql格式是
yyyy-mm-dd

我几乎尝试了所有的
Date
convert函数,但都没有成功。总是在Mysql表上看到0000-00-00

如何正确转换

这是我最后一次尝试:

$date[0]
是csv中的日期单元格。-
26/05/2016
,mysql中的第二列是日期)


strotime
等待输入格式

您需要拆分字符串,并从中创建一个
Y-m-d
fromat,或者您可以使用
DateTime
对象

$dateString = '11/05/2016';
$Date = DateTime::createFromFormat('d/m/Y', $dateString, new DateTimeZone(('UTC')));
echo $Date->format('Y-m-d');
输出

2016-05-11 
使用
strotime

$string = '26/05/2016';
$trydate = date("Y-m-d", strtotime(substr($string, -4) . "-" . substr($string, 3, 2) . "-" . substr($string, 0, 2)));
echo $trydate;

结果是相同的。

strotime
等待输入格式

您需要拆分字符串,并从中创建一个
Y-m-d
fromat,或者您可以使用
DateTime
对象

$dateString = '11/05/2016';
$Date = DateTime::createFromFormat('d/m/Y', $dateString, new DateTimeZone(('UTC')));
echo $Date->format('Y-m-d');
输出

2016-05-11 
使用
strotime

$string = '26/05/2016';
$trydate = date("Y-m-d", strtotime(substr($string, -4) . "-" . substr($string, 3, 2) . "-" . substr($string, 0, 2)));
echo $trydate;

结果是一样的。

我认为您需要将
/
转换为
-
,以便strotime理解格式

比如说

while(...) {
    $date = date('Y-m-d', strtotime(str_replace('/', '-', $data[0])));
    echo $date;
    $import = "...";
}

我认为您需要将
/
转换为
-
,以便strotime理解格式

比如说

while(...) {
    $date = date('Y-m-d', strtotime(str_replace('/', '-', $data[0])));
    echo $date;
    $import = "...";
}

您需要使用SET子句以及一个变量来引用该列的行内容。在列列表中,将日期列指定给变量名。然后可以在SET语句中使用它

LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE testresult
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(cityid, @var1, testnum,result)
set dateOfBirth = STR_TO_DATE(@var1, '%d/%m/%y')

您需要使用SET子句以及一个变量来引用该列的行内容。在列列表中,将日期列指定给变量名。然后可以在SET语句中使用它

LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE testresult
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(cityid, @var1, testnum,result)
set dateOfBirth = STR_TO_DATE(@var1, '%d/%m/%y')

我衷心赞成使用
DateTime
对象:)@Catharsis我正在从事一个项目,在这个项目中,我应该使用超出unix时间戳范围的日期。这是我第一次使用
DateTime
。我真不敢相信没有它我还能活下去。另一个优点是
DateTimeZone
功能。喜欢它:)@lolka_bolka谢谢!它起作用了。。。我也试过使用explode(“/”等),它也工作了。但我很好奇……如果我不知道csv中的日期格式,有没有办法做到这一点?我的意思是某种通用转换?没有通用的解决方案。当日期在
dd[any separator]mm[any separator]yyyy
中时,您可以始终使用
substr
对象,因此只有分隔符可以更改。你做什么?获取最后4个字符串,添加一个
-
字符串,然后获取
5,6
字符添加
-
字符串并获取前2个字符。如果这是你的问题。STROTIME等待yyyy mm dd fromat(或Y-m-d H:i:s)收到了。。无论如何-非常感谢!!:):)我衷心赞成使用
DateTime
对象:)@Catharsis我正在从事一个项目,在这个项目中,我应该使用超出unix时间戳范围的日期。这是我第一次使用
DateTime
。我真不敢相信没有它我还能活下去。另一个优点是
DateTimeZone
功能。喜欢它:)@lolka_bolka谢谢!它起作用了。。。我也试过使用explode(“/”等),它也工作了。但我很好奇……如果我不知道csv中的日期格式,有没有办法做到这一点?我的意思是某种通用转换?没有通用的解决方案。当日期在
dd[any separator]mm[any separator]yyyy
中时,您可以始终使用
substr
对象,因此只有分隔符可以更改。你做什么?获取最后4个字符串,添加一个
-
字符串,然后获取
5,6
字符添加
-
字符串并获取前2个字符。如果这是你的问题。STROTIME等待yyyy mm dd fromat(或Y-m-d H:i:s)收到了。。无论如何-非常感谢!!:):)