Дата вставляется как 0000-00-00 00:00:00 в mysql

Мой вывод $date находится в цикле foreach

29.09.11, 02/13/11, 09/15/10, 06/11/10, 04/13/10, 04/13/10, 04/13/10, 09/24/09, 02 / 19/09, 12/21/08

Мой mysql-запрос (PHP) выглядит следующим образом

 ("INSERT INTO table_name(`field1`, `field2`,`date`) VALUES ('".$value1."','".$value2 ."','".$date."')"); 

Вопрос: В моей базе данных все даты хранятся как 0000-00-00 00:00:00 . Но 4-я дата (06/11/10) хранится как 2006-11-10 00:00:00 .

Я пробовал с date('Ymd H:i:s', $date); но никакой помощи.

Примечание. Поле моей базы данных является типом даты и времени. Есть идеи?

Вы на правильном пути со своей date('Ymd H:i:s',$date); но функция date () принимает временную метку как свой второй аргумент, а не дату.

Я предполагаю, что ваши примеры в американском формате даты, поскольку они выглядят так. Вы можете сделать это, и он должен получить нужные вам значения:

 date('Ymd H:i:s', strtotime($date)); 

Причина, по которой он не работает, заключается в том, что он ожидает дату в формате YYYY-MM-DD и пытается оценить ваши данные как таковые. Но у вас есть MM / DD / YY, что смущает его. Пример 06/11/10 является единственным, который может быть интерпретирован как допустимая дата YYYY-MM-DD из ваших примеров, но PHP думает, что вы имеете в виду 06 как год, 11 как месяц и 10 как день.

Я создал свою собственную функцию для этой цели, может быть вам полезен:

 function getTimeForMysql($fromDate, $format = "dmy", $hms = null){ if (!is_string($fromDate)) return null ; try { $DT = DateTime::createFromFormat($format, trim($fromDate)) ; } catch (Exception $e) { return null ;} if ($DT instanceof DateTime){ if (is_array($hms) && count($hms)===3) $DT->setTime($hms[0],$hms[1],$hms[2]) ; return ($MySqlTime = $DT->format("Ymd H:i:s")) ? $MySqlTime : null ; } return null ; } 

Итак, в вашем случае вы используете формат m/d/yy :

 $sql_date = getTimeForMysql($date, "m/d/yy") ; if ($sql_date){ //Ok, proceed your date is correct, string is returned. } 

У вас нет века в вашей дате, попробуйте преобразовать его вот так:

 <?php $date = '09/25/11'; $date = DateTime::createFromFormat('m/d/y', $date); $date = $date->format('Ym-d'); print $date; 

Печать:

 2011-09-25 

Теперь вы можете вставить $ date в MySQL.