使用STR_TO_DATE()MySQL的空值

时间:2016-08-25 20:54:16

标签: mysql str-to-date

无论出于何种原因,某些日期在使用STR_TO_DATE()时会返回null,而其他日期则不会。

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;

RETURNS

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

1 个答案:

答案 0 :(得分:0)

您的格式字符串表示月份和日期之后有空格。但是当你连接它们时,你没有任何空格。使用CONCAT_WS指定要连接的项目之间的分隔符。

STR_TO_DATE( CONCAT_WS(' ', MONTH(DOB), DAY(DOB), YEAR(CURDATE()) ), '%m %d %Y')

corrected fiddle