MySQL - Изменить строку даты на тип даты на месте? - PullRequest
4 голосов
/ 11 сентября 2009

(Привет всем. Я новичок в SQL и MySQL в частности. Я знаю немного PHP.)

У меня есть таблица, которая содержит столбец "date_string". По старым причинам это текстовое поле, содержащее дату в формате d / m / YY. например «22/11/09» от 22 ноября 2009 г.

Вопрос: как я могу преобразовать все поля в этом столбце в стандартный формат даты MySQL (ГГГГ-мм-дд) на месте?

Или, если не удалось изменить его на месте, учитывая, что тип столбца является текстовым, как я могу взять каждую существующую текстовую дату и создать стандартную дату в другом столбце (типа «дата») в пределах таблица

Спасибо за любую помощь.

Ответы [ 3 ]

14 голосов
/ 11 сентября 2009

Возможно, вы хотите использовать функцию STR_TO_DATE().

SELECT STR_TO_DATE(textdate, '%d/%m/%y') FROM MyTable...

Или создайте другой столбец с типом данных DATE и скопируйте значения:

ALTER TABLE MyTable ADD COLUMN realdate DATE;
UPDATE MyTable SET realdate = STR_TO_DATE(textdate, '%d/%m/%y');
1 голос
/ 11 сентября 2009
    UPDATE your_table
    SET your_col = '20'
              + substring(your_col, 
                          LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1
                         )
              + '-'
              + substring(your_col, 
                          LOCATE('/', your_col) + 1, 
                          LOCATE('/', your_col, LOCATE('/', your_col) + 1)
                         )
              + '-'
              + substring(your_col, 1, LOCATE('/', your_col) - 1)


/*
    LOCATE('/', your_col) -> search for 1st occurence of '/' in your_col
    LOCATE('/', your_col, LOCATE('/', your_col) + 1) -> search for 2nd occurence of '/' in your_col
    LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1 -> from where to retriev the last part
*/

(полагаю, год> = 2000)

0 голосов
/ 11 сентября 2009

если у вас возникли проблемы с этим из MySQL, вы можете попробовать с php, конвертировав даты с помощью strtotime ()

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