Как вставить дату и время с микросекундной точностью в mysql?

У меня есть такая строка:

2011-11-11 11:11:11.111111

и мне нужно вставить его в MySql, в столбец datetime. Но после того, как я вставлю его, он становится

2011-11-11 11:11:11

Какие'идет не так?

 Zeina26 дек. 2012 г., 10:57
проверьте этот вопрос:stackoverflow.com/questions/2572209/...
 Darin Dimitrov26 дек. 2012 г., 10:51
Откуда ты знаешь, что это становится2011-11-11 11:11:11? Где вы видели, что это отформатировано так? Кроме того, в каком типе столбца вы сохраняете это значение?

Ответы на вопрос(4)

Некоторые примеры вставки значений даты и времени в MySQL (5.6.17)

create database if not exists mydb;
use mydb;
drop table if exists sample;
create table sample (c1 integer, c2 datetime(6),c3 varchar(30));
insert into sample values (1, '2014-07-25 11:18:10.999999', 'Actual Given Value');
insert into sample values (2, now(6), 'From NOW(6) function');
insert into sample values (3, now(), 'From NOW() function');
insert into sample values (4, sysdate(6), 'From sysdate(6) function');
insert into sample values (5, sysdate(), 'From sysdate() function');

select * from sample;

 # c1, c2, c3
'1', '2014-07-25 11:18:10.999999', 'Actual Given Value'
'2', '2014-07-25 11:27:27.314114', 'From NOW(6) function'
'3', '2014-07-25 11:27:27.000000', 'From NOW() function'
'4', '2014-07-25 11:27:27.429121', 'From sysdate(6) function'
'5', '2014-07-25 11:27:27.000000', 'From sysdate() function'
 lsblsb03 нояб. 2016 г., 12:28
MySQL (5.6.17) не поддерживает datetime (<дробный-секунд>). Вам нужна как минимум MySQL версии 5.6.4.

Как указано вДробные секунды в значениях времени:

Конечная часть дробных секунд допустима для временных значений в таких контекстах, как литеральные значения, а также в аргументах или возвращаемых значениях из некоторых временных функций. Пример:

mysql> SELECT MICROSECOND('2010-12-10 14:12:09.019473');
+-------------------------------------------+
| MICROSECOND('2010-12-10 14:12:09.019473') |
+-------------------------------------------+
|                                     19473 |
+-------------------------------------------+

Однако, когда MySQL сохраняет значение в столбце любого временного типа данных, он отбрасывает любую дробную часть и не сохраняет ее.

Обратите внимание, что это поведениеизменился в v5.6.4.

Решение Вопроса

MySql 5.6+ поддерживаетдоли секунды в значениях времени, в то время как предыдущие версии нет.

Стандартdatetime столбец не будет содержать микросекундные значения, аdatetime(6) будут. Вы можете проверить это в MySql 5.6:

CREATE TABLE your_table (
  d1 datetime,
  d2 datetime(6)
);

INSERT INTO your_table VALUES
('2011-11-11 11:11:11.111111', '2011-11-11 11:11:11.111111');

SELECT MICROSECOND(d1) as m1, MICROSECOND(d2) as m2
FROM your_table;

m1 | m2
-----------
0  | 111111

Если вы не используете MySql 5.6+, я бы посоветовал вам использовать два столбца, один для части datetime и один для микросекунд:

CREATE TABLE your_table (
  dt datetime,
  us int
);

INSERT INTO your_table VALUES
('2011-11-11 11:11:11.111111', MICROSECOND('2011-11-11 11:11:11.111111'));
 Jon Surrell11 мая 2017 г., 10:54
Дробное время 5.5 - хороший источник, я полагаю:когда MySQL сохраняет значение в столбце любого временного типа данных, он отбрасывает любую дробную часть и не сохраняет ее ». dev.mysql.com/doc/refman/5.5/en/fractional-seconds.html
 Automate27 июл. 2014 г., 15:28
Вышеуказанные операторы SQL работают для меня, но я могуt Создать таблицу или изменить таблицу со столбцами доли секунды, используя графический интерфейс Workbench.
 Jon Surrell11 мая 2017 г., 10:52
Можете ли вы найти ссылку, что это5.6+? Я неЭто видно в примечаниях к выпуску 5.6.
 piano7heart27 дек. 2012 г., 13:19
Спасибо за исправление моего вопроса и ваш ответ andМой английский такой плохой。
 mikbanUtah20 июн. 2014 г., 03:54
Слово мудрым: неИспользуйте ms для обозначения микросекунд, так как ms является официальным знаком для миллисекунд.

использовать тип данных datetime (6) или отметка времени (6) в вашей таблице и введите текущее время с NOW (6), чтобы получить 6 цифр дробных секунд.

Ваш ответ на вопрос