Как я могу преобразовать дату в формате php в SQL? (и вставьте его)

Я пытаюсь вставить дату, скажем CURDATE() в поле sql DateTime.

Мой день представлен в формате: 28/01/2008

Когда я пытаюсь вставить его в SQL, я получаю только нули.

Итак, как я могу правильно преобразовать его?

Ответ 1

$newdate = date('Y-m-d', strtotime($olddate));

Ответ 2

Я пытаюсь вставить дату, скажем CURDATE() в поле sql DateTime.

$timestamp = strtotime($old_date);
$mydate = date('Y-m-d H:i:s', $timestamp);

Ответ 3

Поскольку вы используете ноту европейской даты (dd/mm/yyyy), функция strtotime вернет 0 (которая, в свою очередь, будет преобразована в 1970-01-01 по дате), если вы не используете - или . как разделитель.

Итак, если вы хотите использовать strtotime, вам придется немного изменить строки даты:

$olddate = '28/01/2008';
$newdate = strtotime(str_replace('/', '-', $olddate));

$newdate теперь должен содержать "2008-01-28"...

Ответ 4

join('-',array_reverse(explode('/',$date)))

чтобы получить стандартный формат даты YYYY-MM-DD Mysql.

или просто используйте MySQL DATE_FORMAT

Ответ 5

Я пытаюсь вставить дату, давайте скажем CURDATE() в поле sql DateTime.

Почему вы не используете функцию MySQL напрямую?

insert tbl (id, other, datecol)
values(NULL, 'abcdef', CURDATE());

Мой день представлен в формате: 28/01/2008

Если это не CURDATE(), вы хотите, но вместо этого, это переменная PHP в формате dd/mm/yyyy, посмотрите эту страницу руководства MySQL для форматирования литералов. Безопасные форматы YYYY-MM-DD и YYYYMMDD без времени.

$date = '28/01/2008';
$query = "insert tbl (id, other, datecol)
          values(NULL, 'abcdef', '" . date('Ymd', strtotime($date)) . "');";

Примечание. yyyymmdd также является допустимым форматом в SQL Server.