2016-11-03 3 views
0

Когда я пытаюсь преобразовать varchar в дату, я получаю нулевые значения взамен.str_to_date возвращает null + mysql

У меня есть значения как 05-MAR-2015 в моей колонке.

Я бегу следующий запрос.

select STR_TO_DATE('n.Invoice_date','%d-%c-Y') from table n; 

После выполнения запроса я получаю нулевые значения взамен.

Я хочу ввести новый столбец в формате даты.

+2

Вы забыли '%' 'Перед Y' и formattor должен быть' '% d-% b-% Y'' –

+0

Что ваш формат строки точно столбец Invoice_date? –

ответ

1

Обратите внимание, что буквальная строка 'n.invoice_date' недействительна. Что вы имеете в виду:

SELECT STR_TO_DATE(n.invoice_date, '%d-%b-%Y') FROM TABLE n 
+0

Я попытался выполнить 'SELECT STR_TO_DATE ('05 -MAR-2015 ','% d-% c-% Y ');' на MYSQL, но это не работает. Может быть, это негодная дата? – rbr94

+0

Спасибо за ваш ответ. Да вы правы. Мне даже нужен псевдоним? – user2663104

+0

Часть 'n.' может быть опущена, да. – tadman

0

Ваша ошибка в использовании %c вместо %b, чтобы получить дату. Вы смешивали форматирование даты с созданием значения даты. Это следует сделать это:

SELECT DATE_FORMAT(STR_TO_DATE(n.invoice_date,'%d-%b-%Y'), '%d-%c-%Y') FROM table n; 

Это приводит к: 05-3-2015

Здесь вы сначала создать дату с STR_TO_DATE, который должен соответствовать формату, в котором он хранится в поле. Затем вы можете отформатировать его с помощью DATE_FORMAT так, как вы хотите.

См MYSQL Docs для получения дополнительной информации: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

+0

Большое спасибо за ваш комментарий. Я использовал следующий запрос: SELECT str_to_date (нижний (Invoice_date), '% d-% b-% Y') из dw.spend_nordic; – user2663104

Смежные вопросы