Как конвертировать дату при импорте листа Excel в базу данных? - PullRequest
1 голос
/ 02 апреля 2011

У меня есть лист Excel в формате 01-Mar-10.Когда я импортирую этот CSV-файл в свою базу данных, он сохраняется как 0000-00-00.Как преобразовать формат даты при импорте, или есть другой способ?

Это код, который я использую для импорта в базу данных

        $databasetable = "sample";
        $fieldseparator = ",";
        $lineseparator = "\n";
        $csvfile = "../uploads/" . basename( $_FILES['file']['name']); 
        $addauto = 0;
        $save = 1;
        $outputfile = "../temp/output.sql";
        if(!file_exists($csvfile)) {
            #echo $csvfile;
            echo "File not found. Make sure you specified the correct path.\n";
            return 0;
            exit;
        }

        $file = fopen($csvfile,"r");

        if(!$file) {
            #echo "Error opening data file.\n";
            return 0;
            exit;
        }

        $size = filesize($csvfile);

        if(!$size) {
            echo "File is empty.\n";
            return 0;
            exit;
        }

        $csvcontent = fread($file,$size);

        fclose($file);

        $lines = 0;
        $queries = "";
        $linearray = array();

        foreach(split($lineseparator,$csvcontent) as $line) {
            $lines++;
            $line = trim($line," \t");
            $line = str_replace("\r","",$line);
            $line = str_replace("'","\'",$line);
            $linearray = explode($fieldseparator,$line);
            $linemysql = implode("','",$linearray);
            if($addauto)
                $query = "insert into $databasetable values('','$linemysql');";
            else
                $query = "insert into $databasetable values('$linemysql');";
            $queries .= $query . "\n";
            @mysql_query($query);

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

почему бы не использовать «LOAD DATA INFILE» с форматированием даты в mysql?

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

0 голосов
/ 02 апреля 2011
$d = "01-Mar-10";
$in_db = date('Y-m-d', strtotime($d));
echo $in_db;

Выход:

2010-03-01

Используйте date() преобразование, чтобы получить действительную форму даты для хранения в базе данных. Используйте strtotime() для преобразования формата даты Excel в отметку времени.

После преобразования данных в $ linearray используйте

$linearray[ID]=date('Y-m-d', strtotime($linearray[ID]));

чтобы изменить его значение на правильный формат. Заменить идентификатор индексом массива элемента на поле даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...