0

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

$TransactionDate= $row['DealDate'];

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

我需要帮助!

4

2 回答 2

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;
于 2012-04-05T04:33:32.417 回答
1

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

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

于 2012-04-05T04:03:58.403 回答