1

何らかの理由で、特定の日付は 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;

戻り値

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

4

1 に答える 1

0

フォーマット文字列は、月と日の後にスペースがあることを示しています。ただし、それらを連結するときにスペースを入れていません。CONCAT_WS連結される項目間のセパレーターを指定するために使用します。

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

修正されたフィドル

于 2016-08-25T21:55:38.900 に答える