[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Смена формата даты в MySQL
Страницы: 1, 2
Bizon4ik
Доброе время суток.

У меня в форму c type=text водится дата в формате 06.05.2013, но в MySQL необходимо записывать в формате 2013.05.06 и как следствие в базу записывается не правильная дата.
Подскажите плз как откоректировать данные из формы дабы они правильно записывались в базу.
Заранее спасибо.
exotica
Цитата из первой попавшейся ссылки после запроса в google

Цитата
Задача
Вы хотите изменить формат, в котором MySQL представляет значения дат.

Решение
Это невозможно. Однако вы можете при сохранении данных преобразовать их в нужный формат, а при отображении привести их практически к любому виду, используя функцию DATE_FORMAT().

Обсуждение
Формат CCYY-MM-DD, используемый MySQL для значений дат, соответствует стандарту ISO 8601 представления дат. Удобство этого формата в том, что год, месяц и день в нем имеют фиксированную длину и появляются в строке даты слева направо, так что даты естественным образом сортируются в правильном хронологическом порядке. Но формат ISO используется не во всех системах баз данных, что может вызвать проблемы при перемещении данных из одной СУБД в другую. Кроме того, многие предпочитают другие форматы дат, такие как MM/DD/YY или DD-MM-CCYY. Это может вызывать проблемы, связанные с несоответствием ожиданий пользователей относительно формата хранения даты и реального поведения MySQL.

Новички в MySQL часто задают вопрос: «Как указать MySQL на необходимость хранить данные в определенном формате, например MM/DD/CCYY?» Ответом, к сожалению, будет: «Никак». MySQL всегда хранит даты в формате ISO, и последствия этого факта затрагивают как ввод данных, так и отображение результирующего множества:

• Для того чтобы при вводе данных сохранить значения, имеющие формат не-ISO, следует сначала преобразовать их. (Если вы не хотите этого делать, придется хранить их как строки, например в столбце CHAR. Но тогда вы не сможете работать с ними как с датами.) В некоторых случаях, если формат значений близок к ISO, преобразование может и не потребоваться. Например, возьмем строковые значения 87-1-7 и 1987-1-7 и числа 870107 и 19870107. При загрузке в столбец DATE все они интерпретируются MySQL как дата 1987-01-07.

• Что касается отображения данных, можно представлять даты не в формате ISO, преобразовав их. Помочь в этом может функция MySQL DATE_FORMAT(), предоставляющая широкий выбор форматов вывода. Вы также можете использовать такие функции, как YEAR(), для извлечения частей дат. Дополнительная информация об изменении формата вывода приведена в главе 10, где также представленнебольшой сценарий, который выгружает содержимое таблицы с переформатированными столбцами дат.


Ключевое из выше сказанного: Помочь в этом может функция MySQL DATE_FORMAT()
Пробуйте ) только отпишите) мне тоже интересно)

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Bizon4ik
То что вы нашли это касается данных взятых из MySQL, а мне необходимо внести их туда в нужном формате.
ADiel
Используйте функцию date.
echo date("Y-m-d", strtotime('06.05.2013')); // 2013-05-06


P.S. Учтите, что неверная дата на входе strtotime даст результат 1970-01-01

_____________
Ищи меня тут (ilyaplot)
Valick
а еще проще заставить пользователей писать дату в формате CCYY-MM-DD и не трогать мозг ни себе ни людям
ну или как обычно делают три выпадающих списка

_____________
Стимулятор ~yoomoney - 41001303250491
ADiel
Цитата (Valick @ 6.05.2013 - 15:21)
а еще проще заставить пользователей писать дату в формате CCYY-MM-DD и не трогать мозг ни себе ни людям
ну или как обычно делают три выпадающих списка

Думаю, многие хотели бы узнать Ваш адрес и нанести грозный визит за три выпадающих списка, в которых есть 31 февраля и проч фишки

_____________
Ищи меня тут (ilyaplot)
andrey888
Цитата
У меня в форму c type=text водится дата в формате 06.05.2013

зачем создавать себе проблемы чтобы их потом решать ?
---------------
Если изменить ввод даты уж никак .... То можно первоначальную дату расклеить на массив , а потом склеить в обратном = нужном вам порядке.

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Valick
ADiel, зато там нет 57-го марта 200013 года, или мне кто-то запретит написать 57.03.200013 ?
опять же если прочитаете внимательно, то это альтернатива, да и лично я не сторонник трех выпадающих.
ну и в конце концов AJAX творит чудеса, и число можно менять в зависимости от года и месяца... доходчиво объяснил?

_____________
Стимулятор ~yoomoney - 41001303250491
exotica
Цитата
Если изменить ввод даты уж никак .... То можно первоначальную дату расклеить на массив , а потом склеить в обратном = нужном вам порядке.


Ответ вашем же сообщением))))

зачем создавать себе проблемы чтобы их потом решать ? 


Функции форматирования для этого и нужны же, или не?

Valick, все долшжно быть привычно)

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Valick
exotica, человек не таракан, ко всему привыкнет smile.gif
мода, тренд и другие страшные слова для того и придуманы, чтобы постоянно меняться smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
andrey888
Цитата
Функции форматирования для этого и нужны же, или не?

Функции форматирования к сожалению не будут принимать строку (дату) через любые разделители ...

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
exotica
Valick, хорошо! )) Объясню свою позицию следующим образом. Я иногда бываю немного скупердяем laugh.gif , поэтому просто возьму и посчитаю миллисекунды.

Человек заходит ко мне в Онлайн магазин, производит регистрацию, тратит миллисекунды на привыкание к новому формату даты, находит нужный товар, и тут ему звонит телефон и он срочно собирается и едет куда то. Как следствие - НЕ приобретая товар! А потом и вовсе про него забудет. В итоге Я останусь без прибыли из-за его потерь времени на регистрацию.

А ведь телефон мог позвонить секундами позже и он бы купил товар и принес мне прибыть, и спокойно поехал по своим делам )

Вот как то так))

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Valick
exotica, я понял вы хотите сожрать мой моск smile.gif такого "правдоподобного" аргумента я давно не встречал)))
___
да и накой хрен мне указывать дату при регистрации в вашем магазине?))
кто вообще меня сможет заставить указать реальную дату, если это конечно не сегодняшнее число?


_____________
Стимулятор ~yoomoney - 41001303250491
exotica
Цитата
да и накой хрен мне указывать дату при регистрации в вашем магазине?))
кто вообще меня сможет заставить указать реальную дату, если это конечно не сегодняшнее число?


Магазин - это просто пример потери прибыли за счет потери времени))

Не суть в ее реальности и верности, суть в том что если ее надо будет указать то некоторые пользователи потратят на это время , т.к. увидят не привычную форму.

А некоторые и вообще не станут регистрироваться)))

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Bizon4ik
Цитата (ADiel @ 6.05.2013 - 15:09)
Используйте функцию date.
echo date("Y-m-d", strtotime('06.05.2013')); // 2013-05-06


P.S. Учтите, что неверная дата на входе strtotime даст результат 1970-01-01

Спасибо за ответ, очень помог.

Подскажите плз, еще такой момент:
Допустим дата из формы приходит в переменной $a.
Можно ли утверждать что если $a==date("Y-m-d", strtotime($a)) то пользователь ввел дату в правильном формате?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.