2012-04-05 66 views
0

我有一个PHP表单,我必须手动输入日期。当我输入日期为Y/M/D时,我没有任何问题。 但如果我输入的日期为d/M/Y它存储在我的数据库为0000-00-00从PHP到MySQL的日期字段返回错误0000-00-00

$TransactionDate= $row['DealDate']; 

TransactionDate =我的字段名 DealDate =我的列名

我需要帮助!

回答

1

MySQL唯一可以接受的直接使用日期格式是YYYY-mm-dd hh:mm:ss。插入其他任何东西几乎总是会导致插入一个0000-00-00默认日期值。

如果您的日期字符串是其他格式,您必须首先将它按摩为MySQL可接受的格式。

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))); 
    

如果日期分隔符是 - 你不能使用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;