我的数据库中有一个新闻表,其中包含字段" 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.000000
我不明白,为什么会出现最后6个零。
你知道他们出现的原因吗?我怎么能删除它?
答案 0 :(得分:1)
datetime
和timestamp
列支持精度高达微秒,如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'))