我的数据库中有一个带有字段“date”的news表,这是一个datetime。
我在数据库中插入了一个日期,我的日期的格式是“2014年6月1日星期日”,我需要在插入之前将其转换为datetime。
所以我将日期转换为日期时间:
$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个零会出现。
你知道它们为什么会出现吗?我怎么才能把它取下来??
最佳答案
datetime
和timestamp
列支持高达微秒的精度,如documentation中所述:
日期时间或时间戳值可以包含尾随的小数
秒部分精度可达微秒(6位数)。在
特别是,插入日期时间或
存储而不是丢弃时间戳列。用小数
包含部分,这些值的格式为'YYYY-MM-DD
HH:MM:SS[.fraction]',日期时间值的范围是“1000-01-01”
00:00:00.000000'到'9999-12-31 23:59:59.999999'的范围
时间戳值为“1970-01-01 00:00:01.000000”到“2038-01-19”
03:14:07.999999英尺。小数部分应始终与
剩下的时间小数点;没有其他的小数秒
可识别分隔符。关于分数秒的信息
MySQL中的支持,请参阅第11.3.6节“时间上的小数秒”
价值观”。
您的值被正确存储,如果您想以特定的方式(例如不带小数秒)检索它,那么使用date_format()
将数据作为格式化字符串提取出来。在您的情况下,您似乎需要格式'%y-%m-%d %h:%i:%s'
。