MySQL форматирование даты - PullRequest
1 голос
/ 03 февраля 2009

Я пытаюсь этот запрос:

SELECT ARTICLE_NO, 
    USERNAME, 
    ACCESSSTARTS, 
    ARTICLE_NAME, 
    date_format( ACCESSSTARTS, '%d %m %Y' ) AS shortDate 
FROM AUCTIONS 
WHERE upper( ARTICLE_NAME ) LIKE '%hardy%' 
LIMIT 0 , 10;

Что отлично работает, но shortDate имеет значение null, и я не уверен, почему.

Содержимое базы данных выглядит так:

ARTICLE_NO    USERNAME     ACCESSSTARTS          ARTICLE_NAME  shortDate
110313660559  banger-wear  17.11.2008 13:24:56   acolshirt     NULL

edit: поле accessstarts - это не поле даты и времени, а varchar. Я не уверен, что делать. Должен ли я просто удалить все после первого пробела в ACCESSSTARTS, чтобы отображалась только дата?

Или было бы лучше преобразовать столбец в поле даты и времени, и если да, то как мне указать, что он должен быть в формате% D.% M.% Y вместо значения по умолчанию, которое начинается с% Y

Ответы [ 3 ]

1 голос
/ 03 февраля 2009

ACCESSSTARTS выглядит как строковый тип столбца вместо даты и времени. Попробуйте заменить свой

date_format( ACCESSSTARTS, '%d %m %Y' )

этим:

date_format(str_to_date(ACCESSSTARTS, '%d.%m.%Y %H:%i:%S'), '%d %m %Y');
1 голос
/ 03 февраля 2009

Форматирование ACCESSSTARTS похоже на дату, когда у вас есть varchar, но DATE_FORMAT ожидает значение DATE или DATETIME.

Вы можете попробовать использовать STR_TO_DATE , чтобы сначала превратить эту строку в значение даты, например,

SELECT 
   ACCESSSTARTS, 
   date_format(str_to_date(ACCESSSTARTS, '%d.%m.%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate
FROM AUCTIONS 
WHERE upper( ARTICLE_NAME ) LIKE '%hardy%' 
LIMIT 0 , 10;
0 голосов
/ 03 февраля 2009

17.11.2008 13:24:56 не кажется действительной датой mysql. Сохраняете ли вы этот столбец как дату, и если да, то есть ли форматирование, применяемое к этой дате. Вы можете использовать комбинацию STR_TO_DATE для преобразования строкового формата в дату, а затем использовать DATE_FORMAT для даты для достижения результата.

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