Мой вывод $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.