Php 使用strotime()和date()更改日期时间格式时产生特定日期时间的空值

Php 使用strotime()和date()更改日期时间格式时产生特定日期时间的空值,php,mysql,date,datetime,Php,Mysql,Date,Datetime,我正在使用此代码将此“29-08-2013 12:27:04”日期时间转换为此格式“2013-08-29 12:27:04” $insert_dts = date('Y-m-d H:i:s',strtotime($this->input->post('insert_dts'))); 但问题是,;无论何时该值变为null,都会导致“1970-01-01 00:00:00” 因为我正在使用$insert\u dts输入数据库,所以它在mysql数据库的日期时间字段中输入了这个值(197

我正在使用此代码将此“29-08-2013 12:27:04”日期时间转换为此格式“2013-08-29 12:27:04”

$insert_dts = date('Y-m-d H:i:s',strtotime($this->input->post('insert_dts')));
但问题是,;无论何时该值变为null,都会导致“1970-01-01 00:00:00”

因为我正在使用
$insert\u dts
输入数据库,所以它在mysql数据库的日期时间字段中输入了这个值(1970-01-01 00:00:00),而不是“0000-00-00:00:00”

我知道这可以通过if-else检查
$this->input->post('insert_dts')
是否为空来解决


是否有其他解决方案不检查每一个?

在插入之前使用触发器
可能是一种更干净的方法

$time = strtotime($this->input->post('insert_dts'));
if($time == 0)
$insert_dts = date('Y-m-d H:i:s',);

不确定你认为它不同于“检查每一个”。

简单如:

$insert_dts = $this->input->post('insert_dts') ? date('Y-m-d H:i:s', strtotime($this->input->post('insert_dts'))) : '0000-00-00 00:00:00';

不,检查每个值有什么问题?1970-01-01 00:00:00在历元中为零,用于unix_时间戳。时间戳统计自1970-01-01 00:00:00以来的秒数。因此,这是完全正确的,在代码的这一部分中,没有其他方法可以事先检查值。另一种可能是在SQL中插入DB时处理此问题-Statement@steven没什么,只是询问是否还有其他内容?我会使用TIMESTAMP,因为它提供默认值CURRENT_TIMESTAMP,该值在插入期间自动注明日期。但是如果我使用触发器,我可以插入值1970-01-01 00:00:00吗?每次插入
1970-01-01 00:00:00
,都会将其转换为
0000-00-00:00
01-01-1970 00:00:00
真的可以输入吗?如果是这样,您将需要使用PhP检查它