Оставете го на по-проста функция с. DATE()
връща частта от датата на низ във формат ГГГГ-ММ-ДД:
SELECT DATE(birthday) FROM `test`
Резултат:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Причината, поради която кодът ви не работи е, че STR_TO_DATE()
очаква същите входни и изходни формати, напр. STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Разгледайте примери в документацията
. Тази функция се използва най-вече за преобразуване на дати или часове от един формат в друг, където оригиналният формат е нещо извън MySQL и искате да импортирате данните във формата на датата на MySQL например - в този случай ще знаете какъв е оригиналът форматът на датата е.
Пример:
SELECT STR_TO_DATE('20041225', '%Y-%m-$d'); -- null - formats don't match
SELECT STR_TO_DATE('2004-12-25', '%Y-%m-%d'); -- 2004-12-25 - formats match