简体   繁体   中英

MySQL STR_TO_DATE() returns invalid date

Our website requires signing up. Lately it has become apparent that the signup process fails on many occasions. I implemented several logs in my PHP code to start tracking this. Including one to track outputs from mysql_last_error() when possible.

My next step was to write a script that generates sign-up requests with random values for the different required fields. My logic was that if this yields an issue - the problem is with the back-end logic, and if it doesn't - the problem is with server loads. (BTW, was this sound logic?)

When sending many of these (I'd say about 150) I got only three errors, and the mysql_last_error log showed this:

  • [Wed May 21 13:20:45.000000 2014] Incorrect date value: '1964-11-31' for column 'dob' at row 1

  • [Wed May 21 13:48:37.000000 2014] Incorrect date value: '1963-11-31' for column 'dob' at row 1

  • [Wed May 21 13:48:37.000000 2014] Incorrect date value: '1967-02-29' for column 'dob' at row 1

The request is sent in a JSON format, and its dob field is in mm/dd/yyyy format. The SQL in my PHP code subsequently looks like this:

"STR_TO_DATE('".$cleanUser['dob']."', '%m/%d/%Y')"

I tried performing this operation inside MySQL Workbench as well, to isolate it from possible bad code. but it failed there as well. I simply don't understand what's the problem, and why it occurs only on some dates.

All help will be greatly appreciated, Thanks in Advance

November only has 30 days, so the date 1964-11-31 doesn't exist.

And 1967 is not a bissextile year, so february only has 28 days this year.

BTW, use parameterized query instead of SQL concatenation to avoid leaving your queries open to SQL injection.

I think error come from data format. %m means months in words. January, February .etc So could you please use mm or MM format to date

You can see more details at php manual page http://www.php.net/manual/en/datetime.formats.date.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM