Intereting Posts

Формат PHP date () при вставке в datetime в MySQL

Каков правильный формат для передачи функции date() в PHP, если я хочу вставить результат в столбец типа datetime MySQL?

Я пробовал date("YMD G:i:s") но это просто вставляет «0000-00-00 00:00:00» каждый раз.

Проблема в том, что вы используете 'M' и 'D' , которые представляют собой текстовые представления, MySQL ожидает числовое представление формата. 2010-02-06 19:30:13

Попробуйте: date("Ymd H:i:s") который использует числовые эквиваленты.

отредактируйте: переключитесь на G на H , хотя это может и не повлиять, вы, вероятно, захотите использовать 24-часовой формат с ведущими 0.

Из комментариев справочной страницы date() php:

 <?php $mysqltime = date ("Ymd H:i:s", $phptime); ?> 

У вас был «Y» правильный – это полный год, но «M» – трехзначный месяц, а «m» – двухзначный месяц. Такая же проблема с «D» вместо «d». «G» – это 1 или 2-значный час, где «H» всегда имеет преимущество 0 при необходимости.

Вот альтернативное решение: если у вас есть дата в PHP как временная метка, обходите ее обработку с помощью PHP и позвольте БД позаботиться о ее преобразовании с помощью функции FROM_UNIXTIME .

 mysql> insert into a_table values(FROM_UNIXTIME(1231634282)); Query OK, 1 row affected (0.00 sec) mysql> select * from a_table; +---------------------+ | a_date | +---------------------+ | 2009-01-10 18:38:02 | +---------------------+ 

Я использую следующий PHP-код для создания переменной, которую я вставляю в столбец MySQL DATETIME.

 $datetime = date_create()->format('Ymd H:i:s'); 

Это будет содержать текущую дату и время сервера.

Отметьте штамп времени для столбца MySQL DATETIME:

 strftime('%Y-%m-%d %H:%M:%S',$timestamp); 

Формат MySQL datetime с PHP

 $date = "'".date('Ymd H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'"; 
 $date_old = '23-5-2016 23:15:23'; //Date for database $date_for_database = date ("Ymd H:i:s", strtotime($date_old)); //Format should be like 'Ymd H:i:s'`enter code here` 

Нет необходимости использовать метод date () из PHP, если вы не используете временную метку. Если dateposted – столбец datetime, вы можете вставить текущую дату следующим образом:

 $db->query("INSERT INTO table (dateposted) VALUES (now())"); 

Я использую эту функцию (PHP 7)

 function getDateForDatabase(string $date) : string { $timestamp = strtotime($date); $date_formated = date('Ymd H:i:s', $timestamp); return $date_formated; } 

Старые версии PHP (PHP <7)

 function getDateForDatabase($date) { $timestamp = strtotime($date); $date_formated = date('Ymd H:i:s', $timestamp); return $date_formated; } 

Это сводило меня с ума, ища простой ответ. Наконец, я сделал эту функцию, которая, кажется, улавливает все данные и дает хорошую строку SQL, которая является правильной или, по крайней мере, действительной и проверяемой. Если это 1999-12-31, это, вероятно, неверно, но не приведет к ошибке в MySQL.

 function MakeSQLDate($date) { if (is_null($date)) { //use 1999-12-31 as a valid date or as an alert return date('Ym-d', strtotime('1999-12-31')); } if (($t = strtotime($date)) === false) { //use 1999-12-31 as a valid date or as an alert return date('Ym-d', strtotime('1999-12-31')); } else { return date('Ymd H:i:s', strtotime($date)); } }