2010-11-12 2 views
0

Я уверен, что это должен быть общий вопрос, но я не могу найти его в любом месте, так вот он идет:Нажмите странно отформатированные даты в MySQL из PHP

У меня есть даты в этом формате: 09/Jul/2003:00:03:48 -0300 и я хочу, чтобы подтолкнуть их в a DATETIME Поле в MySQL.

Что такое самый простой способ сделать это? Нажатие на них приводит к тому, что они обнуляются.

ответ

5

MySQL не включает часовой пояс в DateTimes, но вы можете использовать:

STR_TO_DATE('09/Jul/2003:00:03:48', '%d/%b/%Y:%H:%i:%s') 

... преобразовать строковое представление даты/времени в DATETIME для хранения в базе данных.

Ссылка:

+0

Удивительная благодарность! Я знал, что должен быть какой-то простой способ сделать это. Я просматривал функции php и просто начал вытягивать регулярное выражение. Это * путь * проще. – sixtyfootersdude

+0

@sixtyfootersdude: Если вы ищете PHP-эквивалент (он не конвертирует, а анализирует его), попробуйте [strptime] (http://php.net/strptime). – netcoder

0

Моя любимая функция во всем PHP: strtotime(). Если это не может интерпретировать вход, я, вероятно, не могу закодировать что-то, что может.

Так что я хотел бы сделать что-то вроде:

mysql_real_escape_string(date('Y-m-d H:i:s', strtotime($stragely_formatted_date))); 

подготовить строку DATE, чтобы дать MySQL.

Как всегда, подумайте о часовых поясах в своем дизайне.

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

Смежные вопросы