I have some data (insered by users) like :
10-12-2010
XX-12-2010
10-XX-2010
10-12-XXXX
(Notice that I add XX (or XXXX) when the data is not insered.)
How can I convert these String to DATETIME by using MySql syntax?
Thanks
UPDATE
$day=(is_numeric($_POST['day']) && $_POST['day'] > 0 && $_POST['day'] < 32) ? $_POST['day'] : '00';
$month=(is_numeric($_POST['month']) && $_POST['month'] > 0 && $_POST['month'] < 13) ? $_POST['month'] : '00';
$year=(is_numeric($_POST['year']) && $_POST['year'] > 1999 && $_POST['year'] < (date("Y")+1)) ? $_POST['year'] : '0000';
$data=$year."-".$month."-".$day;
$mysqlDate=date('Y-m-d', strtotime($data));
echo $mysqlDate;
There is a problem : if data is *empty-12-2010" it print 2010-11-30. Why?
解决方案
If you're sure you don't want to require all the date fields, just fill them with zero if they don't exist, like this:
$month = ($_POST['month'] == '') ? '00' : $_POST['month'];
otherwise, if you're worried not about blank dates, but about non-standard input, you could do:
$month = (is_numeric($_POST['month']) && $_POST['month'] > 0 && $_POST['month'] < 13) ? $_POST['month'] : '00'
$date = date('Y-m-d G:i:s', strtotime($_POST['dataThatUserEntered']));
should do the trick, no?
Just make sure you validate the user input, otherwise you may find that $date = '1970-01-01 00:00:00 if they enter something crazy.