Как изменить формат даты MySQL для базы данных? - PullRequest
5 голосов
/ 29 октября 2010

Мы используем базу данных MySQL с FileMaker.Похоже, что когда FileMaker читает таблицы MySQL, он будет принимать только даты в формате m / d / y.

Можно ли как-нибудь заставить нашу базу данных MySQL изменить формат по умолчанию на m/ d / y вместо YYYY-MM-DD?

Я знаю, что могу использовать функцию DATE_FORMAT () для отдельных запросов SELECT, но я хочу посмотреть, смогу ли я просто изменить форматирование по умолчанию.

Ответы [ 6 ]

10 голосов
/ 29 октября 2010

Редактировать 1

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

вы не можете изменить формат хранения

вы можете установить ALLOW_INVALID_DATES и сохранить даты в нужном формате, но я действительно не рекомендуютот.

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

5 голосов
/ 29 октября 2010

Хитрость заключается не в том, чтобы изменить формат в MySQL (он все равно не сохраняется в виде строки), а в том, чтобы указать желаемый формат при запросе.

Этого можно достичь, используя что-то вроде этого:

SELECT date_format(mydatefield,'%m/%d/%Y') as mydatefield FROM mytable

Официальное руководство MySQL для этого здесь: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

Кстати, не по теме, но я чувствую, что должен упомянуть об этом: я бы всегда рекомендовал не использовать mm / dd / yyyy в качестве формата даты - вы будете путать любого из-за пределов США; практически любая другая страна в мире обычно использует дд / мм / гггг. Но оба эти формата неоднозначны - какую дату вы имеете в виду, когда говорите «12/05/2010»? Возможно, он отличается от меня, но на самом деле невозможно понять, какой путь вы хотели.

Если вы намереваетесь использовать дату для целей отображения, я всегда буду показывать месяц в виде слова или сокращения, поскольку это устраняет любую двусмысленность. Для целей ввода используйте элемент управления календаря, чтобы избежать возможной путаницы.

1 голос
/ 29 октября 2010

Я не думаю, что вы можете, смотрите Изменение формата даты MySQL .

Существуют системные переменные с именами date_format и datetime_format, которые выглядят многообещающими, но если вы попытаетесь установить их, вы получите сообщение об ошибке, и в документации говорится, что они "не используются".

0 голосов
/ 16 мая 2017
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'
0 голосов
/ 16 мая 2013
SELECT COUNT(field_name) AS count_it FROM table_name WHERE DATE_FORMAT(date_field,'%Y-%m-%d') = DATE_FORMAT(CURDATE(), '%Y-%m-%d')-- to count records for today.
0 голосов
/ 05 марта 2013

Я использую установку WAMP и обычно просто создаю столбец INT(10), а затем сохраняю свои даты следующим образом:

UPDATE  `test` SET  `dateandtime` = DATE_FORMAT( NOW(),  '%y%m%d%H%i' ) WHERE `id` =1234;

. В нем 2013-11-22 12:45:09 хранится как число типа 1322111245.Да, это может считаться «неправильным», но мне все равно.Это работает, и я могу легко сортировать и форматировать на клиенте любым удобным для меня способом.

Это явно не рекомендуется, если вы планируете запускать какие-либо другие функции даты, но для себя я обычно просто хочу знатьПоследнее обновление записи и сортировка результатов по дате.

...