如何在MYSQL中插入时间2009-09-22 18:09:37.881我的列类型是DateTime

时间:2009-09-22 12:53:02

标签: mysql

如何在mysql中插入时间2009-09-22 18:09:37.881。实际上我可以在mysql中插入和检索时间2009-09-22 18:09:37但是每当我尝试插入2009-09-22 18:09:37.881数据时都没有插入数据库。

2009-09-22 18:09:37.881     ------->  YYYY-MM-DD HH:MI:Sec.Ms

我使用以下查询创建了一个表

Create table XYZ(MyTime DateTime);

我尝试了下面的查询工作正常

insert into XYZ(MyTime) values('2009-09-22 18:09:37');

但我尝试使用下面的查询,但是没有正常工作(数据没有在数据库中插入)

 insert into XYZ(MyTime) values('2009-09-22 18:11:38.881');

5 个答案:

答案 0 :(得分:5)

我解决了问题。数据库不允许以毫秒为单位插入时间。请看下面的行:

CREATE TABLE MyTimeStamp(TimeData decimal(17,3));

INSERT INTO  MyTimeStamp(TimeData) values (20090922201843.426);

SELECT timestamp(TimeData) FROM MyTimeStamp;

输出:

2009-09-22 20:018:43.426000

答案 1 :(得分:2)

最终在MySQL 5.6.4中添加了小数秒功能。 链接到文档:{{3p>

答案 2 :(得分:1)

对MySQL参考页面here进行了快速扫描后,他们似乎建议您不能将毫秒添加到datetime类型的列中。直接引用是

  

“然而,微秒不可能   存储在任何时间的列中   数据类型。任何微秒部分都是   丢弃“。

这意味着您也不能使用时间戳。

是否需要几毫秒?它们是否可以存储在辅助列中,然后在检索时与基本日期时间重新组合?

答案 3 :(得分:0)

MySQL中的所有时间类型只有precision of seconds

  

[...]微秒不能存储到任何时态数据类型的列中。任何微秒部分都将被丢弃。

您需要一些解决方法。

答案 4 :(得分:0)

<?
# PHP
$microtime = microtime(true);
$datetime = date("Y-m-d H:i:s");
?>

MYSQL

  • CREATE field col_datetime - DATETIME)
  • CREATE字段col_microtime - DECIMAL(15,4)

ADD: INSERT INTO your_table(col_datetime,col_microtime)值('$ datetime','$ microtime')

列出new-&gt; old: SELECT * FROM yout_table ORDER BY col_microtime DESC

列出old-&gt; new: SELECT * FROM yout_table ORDER BY col_microtime