Intereting Posts
Использование запроса MySQL при выборе доступности номера Отключить или ускорить индексацию DLTK в Eclipse PDT? Как создать событие Календаря Google без напоминания / Как получить учетные записи службы для олицетворения пользователей Получение виджета CodeIgniter – создание шаблонов / загрузка PHP strtotime +1 месяц Ошибка формата PDF с PHP Symfony2 Ограничитель валидатора GreaterThan на другое свойство Первое выпадающее меню для автоматического изменения параметров второго выпадающего меню переопределяя блок пурпурного цвета в нескольких модулях (и как игнорировать другие) PHP: получение «использования неопределенного константы COOKIE_LOGIN», как я могу это исправить? php не может подключиться к mysql с ошибкой 13 (но в командной строке) Организация данных на основе Timestamp mysql + PHP Что означает поставщик в структуре веб-файла? команда curl не может получать содержимое из api.github, но сеть в порядке вложенное require_once с абсолютным путём не работает

преобразовать дату php в формат mysql

У меня есть поле даты в php, которое использует этот код:

$date = mysql_real_escape_string($_POST['intake_date']); 

Как преобразовать это в формат MySql 0000-00-00 для включения в db. Является ли это по строкам: date ('Ymd' strtotime ($ date). Причина, о которой я прошу, заключается в том, что я пробовал варианты этого, и я не могу заставить его работать. Либо отображается как 1970, либо какой-то другой вариант из этого. Большое спасибо

Related of "преобразовать дату php в формат mysql"

 $date = mysql_real_escape_string($_POST['intake_date']); 

1. Если в столбце MySQL DATE тип DATE :

 $date = date('Ym-d', strtotime(str_replace('-', '/', $date))); 

2. Если ваш столбец MySQL имеет тип DATETIME :

 $date = date('Ymd H:i:s', strtotime(str_replace('-', '/', $date))); 

Вам не нужно работать strototime() , потому что он не будет работать с разделителями тире, он попытается сделать вычитание.


Обновление , способ форматирования даты, вы не можете использовать strtotime() , вместо этого используйте этот код:

 $date = '02/07/2009 00:07:00'; $date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date); echo $date; 

Вывод:

 2009-07-02 00:07:00 

На этом сайте есть два довольно простых решения – просто проверьте код, я предоставил описания на случай, если вы захотите, – сэкономит вам несколько кликов.

http://www.richardlord.net/blog/dates-in-php-and-mysql

1. Одно общее решение – хранить даты в полях DATETIME и использовать функции PHP (Date) и strtotime () для преобразования между метками времени PHP и MySQL DATETIME. Методы будут использоваться следующим образом:

 $mysqldate = date( 'Ymd H:i:s', $phpdate ); $phpdate = strtotime( $mysqldate ); 

Второй второй вариант – позволить MySQL выполнять работу. У MySQL есть функции, которые мы можем использовать для преобразования данных в тот момент, когда мы обращаемся к базе данных. UNIX_TIMESTAMP будет конвертировать из DATETIME в временную метку PHP, а FROM_UNIXTIME будет конвертировать из временной метки PHP в DATETIME. Методы используются в SQL-запросе. Поэтому мы вставляем и обновляем даты с помощью таких запросов,

 $query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) WHERE..."; $query = "SELECT UNIX_TIMESTAMP(datetimefield) FROM table WHERE..."; 

Вы ищете функции MySQL FROM_UNIXTIME() и UNIX_TIMESTAMP() .

Используйте их в своем SQL, например:

 mysql> SELECT UNIX_TIMESTAMP(NOW()); +-----------------------+ | UNIX_TIMESTAMP(NOW()) | +-----------------------+ | 1311343579 | +-----------------------+ 1 row in set (0.00 sec) mysql> SELECT FROM_UNIXTIME(1311343579); +---------------------------+ | FROM_UNIXTIME(1311343579) | +---------------------------+ | 2011-07-22 15:06:19 | +---------------------------+ 1 row in set (0.00 sec) 

Если consum_date – это общий формат даты, вы можете использовать date() и strtotime()

 $mysqlDate = date('Ymd H:i:s', strtotime($_POST['intake_date'])); 

Однако это будет работать, только если формат даты принят strtotime() . См . Документацию для поддерживаемых форматов.

Если у вас есть дата в формате dd / mm / yyyy, используйте следующую команду:

 $date = explode('/', $_POST['posted_date']); $new_date = $date[2].'-'.$date[1].'-'.$date[0]; 

Если у вас это в мм / дд / гггг, просто измените вторую строку:

 $new_date = $date[2].'-'.$date[0].'-'.$date[1]; 
 function my_date_parse($date) { if (!preg_match('/^(\d+)\.(\d+)\.(\d+)$/', $date, $m)) return false; $day = $m[1]; $month = $m[2]; $year = $m[3]; if (!checkdate($month, $day, $year)) return false; return "$year-$month-$day"; } 

Существует несколько вариантов.

Либо преобразуйте его в timestamp и используйте, как указано в других сообщениях с помощью strtotime() или используйте параметр синтаксиса даты MySQL

Если вы знаете формат даты в $ _POST [incoming_date], вы можете использовать explode для получения года, месяца и времени и затем объединить, чтобы сформировать действительную дату mySql. например, если вы получаете что-то вроде 12/15/1988 в день, вы можете сделать это

  $date = explode($_POST['intake_date'], '/'); mysql_date = $date[2].'-'$date[1].'-'$date[0]; 

хотя если у вас есть действительная дата даты ('ym-d', strtotime ($ date)); должен также работать

PHP 5.3 имеет функции для создания и переформатирования объекта DateTime из любого формата, который вы указываете:

 $mysql_date = "2012-01-02"; // date in Ymd format as MySQL stores it $date_obj = date_create_from_format('Ym-d',$mysql_date); $date = date_format($date_obj, 'm/d/Y'); echo $date; 

Выходы:

 01/02/2012 

MySQL также может управлять форматированием с помощью функции STR_TO_DATE() при вставке / обновлении и DATE_FORMAT() при запросе.

 $php_date = "01/02/2012"; $update_query = "UPDATE `appointments` SET `start_time` = STR_TO_DATE('" . $php_date . "', '%m/%d/%Y')"; $query = "SELECT DATE_FORMAT(`start_time`,'%m/%d/%Y') AS `start_time` FROM `appointments`";