1
По какой-то причине некоторые даты возвращают null при использовании STR_TO_DATE(), тогда как другие - нет.NULL Значения с использованием STR_TO_DATE() MySQL
CREATE TABLE persons (
personid int,
name varchar(100),
dob date;
insert into persons values
(5,"Gov","1985-04-23"),
(1,"Gov","1993-04-23"),
(2,"Sam","1991-11-19"),
(3,"A","1993-04-23"),
(4,"B","1991-11-19");
SELECT STR_TO_DATE(CONCAT( MONTH(DOB), DAY(DOB), YEAR(CURDATE())), '%m %d %Y') FROM persons;
ВОЗВРАТ
STR_TO_DATE(CONCAT(MONTH(DOB), DAY(DOB), YEAR(CURDATE())), '%m %d %Y')
--------------------------------------------------------------------------
(null)
November, 19 2016 00:00:00
(null)
November, 19 2016 00:00:00
(null)
Пожалуйста, смотрите скрипку: http://sqlfiddle.com/#!9/a98eef/1/0
Интересно еще, что он работает для дат без нулевого заполненных значений. BTW: 'dob + INTERVAL (YUAR (CURDATE()) - YEAR (dob)) YEAR' делает то же самое (кроме 29 февраля). –