我有一些数据(由用户插入),如:
(请注意,我没有插入数据时添加XX(或XXXX)。)
如何使用MySql语法将这些字符串转换为 DATETIME ?
由于
更新
$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;
有一个问题:如果数据是*空 - 12-2010“它打印 2010-11-30 。为什么?
答案 0 :(得分:2)
在MySQL的语法中,您可以使用函数STR_TO_DATE()
:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
mysql> SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y'); // -> '2013-05-01'
mysql> SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y'); // -> '2013-05-01'
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您确定不想要求所有日期字段,只需填写零(如果它们不存在),如下所示:
$month = ($_POST['month'] == '') ? '00' : $_POST['month'];
否则,如果您不担心空白日期,而是担心非标准输入,您可以这样做:
$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']));
应该这样做,不是吗?
请确保验证用户输入,否则如果他们输入了疯狂的内容,您可能会发现$date = '1970-01-01 00:00:00
。
答案 3 :(得分:1)
有一个问题:如果数据是* empty-12-2010“它打印2010-11-30。
为什么呢? 因为strtotime正在读取不存在的00-12-2010,所以它将它转换为12月1日的前一天,即数字12月0日,或者在11月30日的reallife!
答案 4 :(得分:0)
Mysql自动完成转换。您可以看到接受的格式here。但是你应该知道xxx并强制要求这些字段。
答案 5 :(得分:0)
好吧,你可以使用date(),使用格式和字符串。
$mysqlDate = date( 'Y-m-d', $stringDate );