我的日期时间格式的日期插入到我的表中,假设有更多的零

时间:2014-06-01 01:10:05

标签: php mysql sql datetime

我的数据库中有一个新闻表,其中包含字段" date",这是一个日期时间。

我在数据库中插入日期,我的日期有这种格式" 2014年6月1日星期日",我需要在插入之前将其转换为日期时间。

所以我将日期转换为日期时间:

$english = array(); //have words in english
$spanish = array(); //have words in spanish                 
$result_date = str_ireplace ($english , $spanish, $f['date']);
$date = DateTime::createFromFormat('l, j F, Y', $result_date);
$date = $data->format('Y-m-d H:i:s'); 

然后我做插入:

$insert = $pdo->prepare("INSERT INTO news (title,date) VALUES (:title,:date)");  
$insert->bindValue(':title', $f['title']);
$insert->bindValue(':date', $date);
$insert->execute();

问题是,我在数据库中得到这样的日期:2014-05-28 02:57:46.0​​00000

我不明白,为什么会出现最后6个零。

你知道他们出现的原因吗?我怎么能删除它?

2 个答案:

答案 0 :(得分:1)

datetimetimestamp列支持精度高达微秒,如documentation中所述:

  

DATETIME或TIMESTAMP值可以包括尾随小数   秒部分精确到微秒(6位)。在   特别是,插入DATETIME或的值中的任何小数部分   TIMESTAMP列存储而不是丢弃。随着分数   包括的部分,这些值的格式是' YYYY-MM-DD   HH:MM:SS [.fraction]',DATETIME值的范围是' 1000-01-01   00:00:00.000000'至' 9999-12-31 23:59:59.999999',以及范围   TIMESTAMP值是' 1970-01-01 00:00:01.000000'至' 2038-01-19   03:14:07.999999&#39 ;.小数部分应始终与之分开   其余时间以小数点表示;没有其他小数秒   分隔符被认可。有关小数秒的信息   MySQL中的支持,请参见第11.3.6节“时间的小数秒   值”。

您的值正确存储,如果您想以特定方式检索它(例如没有小数秒),请使用date_format()将数据作为格式化字符串提取出来。在您的情况下,您似乎想要格式为'%y-%m-%d %h:%i:%s'

答案 1 :(得分:0)

试试这个。

INSERT INTO news VALUES (:title, STR_TO_DATE(:date, '%Y-%m-%d %h:%i:%s'))