Mysql: Установите формат DATETIME на «ДД-ММ-ГГГГ ЧЧ: ММ: СС» при создании таблицы - PullRequest
31 голосов
/ 01 декабря 2011

После поиска, я не могу найти способ создать новую таблицу со столбцом DATETIME с форматом по умолчанию, установленным как 'DD-MM-YYYY HH:MM:SS'

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

CREATE TABLE ()

Заранее спасибо

Ответы [ 9 ]

52 голосов
/ 01 декабря 2011

«MySQL извлекает и отображает значения DATETIME в формате« ГГГГ-ММ-ДД ЧЧ: ММ: СС ».»Это с сайта MySQL.Вы можете сохранить только этот тип, но вы можете использовать одну из множества функций формата времени, чтобы изменить его, когда вам нужно отобразить его.

Mysql Функции времени и даты

Например, одна из этих функций - DATE_FORMAT , которую можно использовать так:

SELECT DATE_FORMAT(column_name, '%m/%d/%Y %H:%i') FROM tablename
16 голосов
/ 01 декабря 2011

Используйте функцию DATE_FORMAT для изменения формата.

SELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y')

SELECT DATE_FORMAT(column_name, '%d/%m/%Y') FROM tablename

Подробнее см. DOC

6 голосов
/ 24 января 2014

Как другие объясняли, что это невозможно, но вот альтернативное решение, оно требует небольшой настройки, но работает как столбец datetime.

Я начал думать, как я могу сделать возможным форматирование. У меня есть идея. Как насчет создания триггера для него? Я имею в виду добавление столбца с типом char, а затем обновление этого столбца с использованием триггера MySQL. И это сработало! Я провел некоторое исследование, связанное с триггерами, и, наконец, пришел к следующим запросам:

CREATE TRIGGER timestampper BEFORE INSERT ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s');
CREATE TRIGGER timestampper BEFORE UPDATE ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s');

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

Итак, вот ваша альтернативная метка времени или альтернатива даты и времени! Надеюсь, это помогло, по крайней мере, я рад, что у меня это получилось.

5 голосов
/ 21 марта 2014

Я использовал следующую строку кода, и она отлично работает. Спасибо .... @Mithun Sasidharan **

SELECT DATE_FORMAT (имя столбца, '% d /% m /% Y') ОТ имени таблицы

**

4 голосов
/ 01 декабря 2011

Я почти уверен, что вы не можете изменить формат даты и времени в mysql.Параметр phpmyadmin, вероятно, применяет пользовательский формат при чтении даты и времени (используя DATE_FORMAT или что-то из php).Не имеет значения, какой формат использует база данных, отформатируйте в приложении, чтобы отобразить ее так, как вы хотите.

Форматирование даты - довольно распространенная задача.Я обычно люблю абстрагировать его в код интернационализации или, если вам не нужно иметь дело с i18n, в общую библиотеку утилит даты.Это помогает поддерживать согласованность и облегчает последующее изменение (или добавляет поддержку i18n).

2 голосов
/ 19 апреля 2013
Dim x as date 

x = dr("appdate")
appdate = x.tostring("dd/MM/yyyy")

dr - переменная устройства чтения данных

2 голосов
/ 01 декабря 2011

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

Ответом является переменная сервера datetime_format , она не используется.

2 голосов
/ 01 декабря 2011

Нет, ты не можешь;datetime будет сохраняться в формате по умолчанию только при создании таблицы, а затем вы можете изменить формат отображения в вашем select запросе так, как вы хотите, используя Mysql Date Time Функции

0 голосов
/ 18 августа 2013

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

DATE NOT NULL FORMAT 'YYYY-MM-DD'
...