MySQL Date Format - PullRequest
       8

MySQL Date Format

2 голосов
/ 04 августа 2011

В моей HTML-форме есть поле, в котором пользователю предлагается ввести дату в формате дд / мм / гггг. Затем я запускаю сценарий PHP, который сохраняет данные в базе данных mySQL, или если бы я мог решить проблему с форматом даты.

Я знаю, что по умолчанию база данных mySQL сохраняет даты как yyyy-mm-dd, но кто-то может сказать мне, пожалуйста, как я могу продолжать сохранять формат даты ввода пользователя как dd / mm / yyyy, но потом, когда она достигнет база данных корректно конвертируется в формат даты mySQL.

Ответы [ 6 ]

1 голос
/ 04 августа 2011

Формат mysql действительно «ГГГГ-ММ-ДД» .

Я предлагаю что-то вроде следующего (непроверенного):

$userInput = '24/12/2004';
date('c',  date_parse($userInput));

Разумно было бы использовать подготовленные заявления и отправить дату непосредственно в подготовленное заявление.Увы, Подготовленные операторы Php-MySQL не допускают тип даты .

1 голос
/ 04 августа 2011

Я тоже сталкивался с этой проблемой. Моим решением было преобразовать строку, введенную пользователем, в метку времени Unix, а затем использовать функцию PHPs date() для преобразования ее в формат, совместимый с MySQL.

Чтобы преобразовать строку в метку времени Unix, вы можете использовать strtotime или, если вы знакомы с объектно-ориентированным программированием, фабричная функция DateTime :: createFromFormat . Из моего опыта: strtotime сделает работу .

Теперь вам нужно преобразовать временную метку, которую вы вернули, в формат MySQL. Это довольно просто:

$sqldate = date("Y-m-d", $timestamp);
1 голос
/ 04 августа 2011

Используйте PHP для запуска форматирования. Прежде чем вставить его в базу данных, переформатируйте данные для MySQL:

$mydate = new DateTime($userdate);
$mydate = $mydate->format("Y-m-d");

Если вам нужно получить его из базы данных, просто измените формат даты обратно аналогичным образом.

0 голосов
/ 16 ноября 2011

Я нашел jquery, который позволил мне установить формат даты, позволяя мне установить стандарт данных, хранящихся в моей базе данных.

0 голосов
/ 02 сентября 2011

Вы можете сделать это, создав простую функцию - что-то вроде этого, например:

function convertDate2Sql($date = null) {
    if (!empty($date)) {
        $date = explode("/", $date);
        return implode("-", array_reverse($date));
    }
}

Очевидно, что вы должны убедиться, что если вы используете другой формат даты, например, в США, который имеет месяц додень, тогда вам придется вручную переставить значения внутри массива $ date после использования функции explode (), но если он в том же формате, что вы указали выше, то с помощью array_reverse () добьется цели.

0 голосов
/ 04 августа 2011

Попробуйте это:

php > list($d,$m,$y) = explode("/","28/04/2011");
php > echo date("Y-m-d",mktime(0,0,0,$m,$d,$y));
2011-04-28
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...