MySQL - IF запрос с STR_TO_DATE - PullRequest
       4

MySQL - IF запрос с STR_TO_DATE

0 голосов
/ 08 января 2019

Привет Stackian Overflowers,

Я пытаюсь перезаписать данные в существующем столбце и сделать STR_TO_DATE в случае, если он уже установлен.

Вот код:

SELECT IF(columnA = '../../..' , '0000/00/00' , STR_TO_DATE(columnA, '%m/%d/%Y) 
FROM tablename
WHERE extract_date = '2018-12-31';

Во всей реальности я должен использовать эту логику для обновления таблицы. Я попробовал это:

UPDATE tablename
IF columnA = '../../..' THEN
SET columnA = '0000-00-00' ELSE
SET columnA = STR_TO_DATE(columnA,'%m/%d/%Y);

Может использовать любую помощь по этому вопросу.

1 Ответ

0 голосов
/ 08 января 2019

Оператор MySQL REGEXP пригодится здесь:

UPDATE tablename
SET date_col = CASE WHEN columnA REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}'
                    THEN STR_TO_DATE(columnA, '%m/%d/%Y)
                    ELSE NULL END;

Нет смысла обновлять columnA со строки на дату, потому что типы не совпадают. Лучшая стратегия - создать новый столбец для хранения даты. Кроме того, я рекомендую использовать NULL, а не 0000-00-00, для представления строки даты, которая не может быть проанализирована.

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

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