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


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

Моя дата в формате: 28/01/2008

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

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

Author: RichardTheKiwi, 2011-01-25

5 answers

$newdate = date('Y-m-d', strtotime($olddate));
 22
Author: Dan Grossman, 2011-01-25 08:17:51

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

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

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

$новая дата теперь должна содержать '2008-01-28'...

 6
Author: wimvds, 2011-01-25 08:57:49

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

$timestamp = strtotime($old_date);
$mydate = date('Y-m-d H:i:s', $timestamp);
 6
Author: Sarfraz, 2012-08-19 18:56:26
join('-',array_reverse(explode('/',$date)))

Чтобы получить стандартный формат даты Mysql ГГГГ-ММ-ДД.

Или просто используйте MySQL'ФОРМАТ ДАТЫ

 3
Author: MatTheCat, 2011-01-25 08:17:37

Я пытаюсь вставить дату, скажем, 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)) . "');";

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

 1
Author: RichardTheKiwi, 2011-01-25 08:33:03