Преобразование дат в PHP для DATETIME в SQL

У меня есть форум на PHP, который принимает дату, как в форме dd/mm/yyyy hh:mm:ss . Однако мне нужно вставить его для SQL как DATETIME в формате как yyyy-mm-dd hh:mm:ss . Как я могу преобразовать эти данные?

Формат даты недействителен: dd/mm/yyyy hh:mm:ss . Вероятно, вы имеете в виду d/m/YH:i:s

Если у вас версия 5.3+, есть безопасный способ конвертировать дату в другой формат. Вот пример:

 $timestamp = '31/05/2001 12:22:56'; $timestamp = DateTime::createFromFormat('d/m/YH:i:s', $timestamp); echo $timestamp->format('Ymd H:i:s'); 

или если вам нравится более процедурный способ:

 $timestamp = '31/05/2001 12:22:56'; $timestamp = date_create_from_format('d/m/YH:i:s', $timestamp); echo date_format($timestamp, 'Ymd H:i:s'); 

Будьте осторожны с предыдущими предложениями. Некоторые из них совершенно ошибочны, а другие могут привести к ошибкам.

Вы можете использовать strtotime и дату, чтобы переработать формат.

 $new_date = date( "Ymd H:i:s", strtotime( $old_date ) ); 

Это означает, что ваша старая дата ( dd/mm/yyyy hh:mm:ss ) преобразует ее в временную метку unix, которая затем может использоваться с функцией даты php для форматирования даты до нужного формата.

Два из нескольких возможных способов:

  1. Преобразуйте в код, а затем передайте преобразованное значение в mysql: $mysqldate = date( 'Ymd H:i:s', $phpdate );
  2. Пусть mysql выполняет работу с помощью встроенных функций: $query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";

если у вас есть datetime avaialable from from from above above format, тогда вам просто нужно использовать следующую функцию.

 function localToMysql($dateTime){ $date_chunks = explode('/', $dateTime); $time_chunks = explode(' ', $date_chunks[2]); $final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1]; 

return $ final_format; }