从php到mysql返回error 0000-00-00的日期字段

时间:2012-04-05 04:01:51

标签: php mysql

我有一个PHP表单,我必须手动输入日期。当我输入日期为Y / M / D时,我没有任何问题。 但如果我输入日期为d / m / y,它将存储在我的数据库中作为0000-00-00

$TransactionDate= $row['DealDate'];

TransactionDate =我的字段名称 DealDate =我的专栏名称

我需要帮助!

2 个答案:

答案 0 :(得分:2)

试试此代码

$date = mysql_real_escape_string($_POST['DealDate']);
  1. 如果您的MySQL列是DATE类型:

    $date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    
  2. 如果您的MySQL列是DATETIME类型:

    $date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));
    
  3. 如果日期分隔符是 - 你不能使用strototime(),因为它不能用于破折号分隔符,它会尝试进行减法。

    在这种情况下使用正则表达式

    $date = mysql_real_escape_string($_POST['DealDate']);
    $date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date);
    echo $date;
    

答案 1 :(得分:1)

MySQL唯一可接受的直接使用日期格式是YYYY-mm-dd hh:mm:ss。插入任何其他内容几乎总是会导致插入的函数默认日期值。

如果您的日期字符串采用其他格式,则必须首先将其按照MySQL可接受的格式进行操作。