У меня есть строка вроде этого:
2011-11-11 11:11:11.111111
и мне нужно вставить его в MySql в столбец datetime. Но после того, как я вставляю его, он становится
2011-11-11 11:11:11
Что пойдет не так?
У меня есть строка вроде этого:
2011-11-11 11:11:11.111111
и мне нужно вставить его в MySql в столбец datetime. Но после того, как я вставляю его, он становится
2011-11-11 11:11:11
Что пойдет не так?
MySql 5.6+ поддерживает дробные секунды в значениях времени, в то время как в предыдущих версиях этого нет.
Стандартный столбец datetime
не будет содержать микросекундные значения, тогда как a 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'));
используйте тип данных datetime (6) или метку времени ( 6) в вашей таблице и вставьте текущее время с помощью СЕЙЧАС ( 6) получите 6 цифр дробных секунд.
Как описано в Дробные секунды во временных значениях:
Конечная дробная секундная часть допустима для временных значений в контекстах, таких как литеральные значения, а также в аргументах или возвратах значений из некоторых временных функций. Пример:
mysql> SELECT MICROSECOND('2010-12-10 14:12:09.019473'); +-------------------------------------------+ | MICROSECOND('2010-12-10 14:12:09.019473') | +-------------------------------------------+ | 19473 | +-------------------------------------------+Однако, когда MySQL сохраняет значение в столбце любого временного типа данных, он отбрасывает любую дробную часть и не сохраняет ее.
Обратите внимание, что это поведение изменилось в версии 5.6.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'