SQL переформатирует дату Excel

Я действительно попал в угол импорта данных из таблицы Excel в базу данных. В моей таблице Excel у меня есть три поля даты: DOB, ЗАРЕГИСТРИРОВАН И EXPIRE. Теперь, когда я ввожу даты для этих полей и импортирую их в базу данных MySQL, он либо показывает 0000-00-00, либо просто выбирает любую дату случайным образом для поля, а таблицы Excel форматируют даты как понедельник-год. ​​Не знаю, как это сделать правильно.

Пожалуйста, кто-нибудь может помочь.

Вот мой импортный код. Не знаю, если мне нужно отформатировать дату с php здесь или что.

<?php
/************************ YOUR DATABASE CONNECTION START HERE   ****************************/

define ("DB_HOST", "localhost"); // set database host
define ("DB_USER", "root"); // set database user
define ("DB_PASS",""); // set database password
define ("DB_NAME","oysg"); // set database name

// $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
// $db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");

$databasetable = "applicant";

$con = new mysqli(DB_HOST, DB_USER,DB_PASS,DB_NAME);
/************************ YOUR DATABASE CONNECTION END HERE  ****************************/set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
// @include('PHPExcel/IOFactory.php');

// This is the file path to be uploaded.
$inputFileName = public_path().'/xls/'.$filename;

try {
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}$allDataInSheet = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$arrayCount = count($allDataInSheet);  // Here get total count of row in that Excel sheetfor($i=2;$i<=$arrayCount;$i++)
{
$surname    = trim(strtoupper($allDataInSheet[$i]["A"]));
$othernames = trim(strtoupper($allDataInSheet[$i]["B"]));
$address    = strtoupper($allDataInSheet[$i]["C"]);
$lga        = trim(strtoupper($allDataInSheet[$i]["D"]));
$sex        = trim(strtoupper($allDataInSheet[$i]["E"]));
$dob        = trim(strtoupper($allDataInSheet[$i]["F"]));
$genotype   = trim(strtoupper($allDataInSheet[$i]["G"]));
$blood_grp  = trim(strtoupper($allDataInSheet[$i]["H"]));
$phone      = trim(strtoupper($allDataInSheet[$i]["I"]));
$email      = trim(strtoupper($allDataInSheet[$i]["J"]));
$occupation = trim(strtoupper($allDataInSheet[$i]["K"]));
$place_emp  = trim(strtoupper($allDataInSheet[$i]["L"]));
$facility   = trim(strtoupper($allDataInSheet[$i]["M"]));
$medical_his = trim(strtoupper($allDataInSheet[$i]["N"]));
$allergy    = trim(strtoupper($allDataInSheet[$i]["O"]));
$duration   = trim(strtoupper($allDataInSheet[$i]["P"]));
$registered     = trim(strtoupper($allDataInSheet[$i]["Q"]));
$expires    = trim(strtoupper($allDataInSheet[$i]["R"]));
$collector  = trim(strtoupper($allDataInSheet[$i]["S"]));
$form_no    = trim(strtoupper($allDataInSheet[$i]["T"]));
$tell_no    = trim(strtoupper($allDataInSheet[$i]["U"]));
$amt_paid   = trim(strtoupper($allDataInSheet[$i]["V"]));

$query = "SELECT surname FROM `applicant` WHERE `surname` = '$surname' and `othernames` = '$othernames'";
$sql = $con->query($query);
$recResult = mysqli_fetch_array($sql);
$existName = $recResult["surname"];
if($existName=="") {
$insertTable= $con->query("insert into `applicant` (surname, othernames,address,lga,sex,dob,genotype,blood_grp,
phone,email,occupation,place_emp,facility,medical_his,allergy,duration,registered,expires,collector,form_no,tell_no,amt_paid)
values('".$surname."', '".$othernames."','".$address."','".$lga."','".$sex."','".$dob."',
'".$genotype."','".$blood_grp."','".$phone."','".$email."','".$occupation."',
'".$place_emp."','".$facility."','".$medical_his."','".$allergy."','".$duration."','".$registered."',
'".$expires."','".$collector."','".$form_no."','".$tell_no."','".$amt_paid."');");$msg = 'Record has been added';
}
else
{
$msg = 'Record already exist';
}
}
Xls::where('name',$filename)->delete();
unlink(public_path().'/xls/'.$filename);
echo "<div class='alert alert-info'>".$msg."</div>";?>

0

Решение

Отформатированная дата Excel не обязательно является правильным форматом для вставки в базу данных SQL, вам может потребоваться прочитать дату как необработанную сериализованную временную метку Excel, преобразовать ее в метку времени Unix или объект PHP DateTime с помощью PHPExcel_Shared_Date::ExcelToPHP() или же PHPExcel_Shared_Date::ExcelToPHPObject(), а затем использовать date() или DateTime объекты format() метод, чтобы преобразовать его в соответствующий формат год-месяц-день для MySQL

Вы можете изменить вызов

toArray(null,true,true,true);

читать все значения как необработанные (неформатированные) значения с помощью

toArray(null,true,false,true);

флаги

0

Другие решения

Я думаю, вам нужно установить правильный формат перед вставкой. Так что для $ expires в вашей вставке используйте функцию mysql DATE_FORMAT (дата, формат) …

больше вы найдете здесь: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

0

Я только что решил вопрос, установив поле даты в текст и записав мои даты как: 2014-02-09, который является правильным форматом даты mysql. И вызвав метод -> для даты в моем php-коде.

0
По вопросам рекламы [email protected]