CURRENT_TIMESTAMP в миллисекундах - PullRequest
57 голосов
/ 09 марта 2012

Есть ли способ получить миллисекунды из отметки времени в MySql или PostgreSql (или других просто из любопытства)?

SELECT CURRENT_TIMESTAMP
--> 2012-03-08 20:12:06.032572

Есть ли что-то вроде этого:

SELECT CURRENT_MILLISEC
--> 1331255526000

или единственной альтернативой является использование DATEDIFF из era?

Ответы [ 16 ]

3 голосов
/ 19 октября 2014

Самый простой способ получить текущее время в миллисекундах в MySql:

SELECT (UNIX_TIMESTAMP(NOW(3)) * 1000)

Начиная с MySql 5.6.

1 голос
/ 27 мая 2015

В MariaDB вы можете использовать

SELECT NOW(4);

Чтобы получить милисек. Смотрите здесь тоже.

1 голос
/ 27 апреля 2015

Я чувствовал необходимость продолжить доработку, поэтому в MySQL:

Текущая отметка времени в миллисекундах:

floor(unix_timestamp(current_timestamp(3)) * 1000)

Метка времени в миллисекундах от заданной даты-времени (3):

floor(unix_timestamp("2015-04-27 15:14:55.692") * 1000)

Преобразовать метку времени в миллисекундах в дату и время (3):

from_unixtime(1430146422456 / 1000)

Преобразование даты и времени (3) в метку времени в миллисекундах:

floor(unix_timestamp("2015-04-27 14:53:42.456") * 1000)
0 голосов
/ 11 октября 2018

Для миллисекунд выполните следующие действия:

select round(date_format(CURTIME(3), "%f")/1000)

Вы можете получить микросекунды следующим образом:

select date_format(CURTIME(6), "%f")
0 голосов
/ 08 июля 2016

Недавно я столкнулся с той же проблемой и создал небольшой проект github, содержащий новую функцию mysql UNIX_TIMESTAMP_MS(), которая возвращает текущую временную метку в миллисекундах.

Также вы можете сделать следующее:

SELECT UNIX_TIMESTAMP_MS(NOW(3)) или SELECT UNIX_TIMESTAMP_MS(DateTimeField)

Проект находится здесь: https://github.com/silviucpp/unix_timestamp_ms

Для компиляции вам нужно просто запустить make compile в корне проекта.

Затем вам нужно только скопировать разделяемую библиотеку в /usr/lib/mysql/plugin/ (или в любую папку с плагинами на вашем компьютере).

После этого просто откройте консоль mysql и запустите:

CREATE FUNCTION UNIX_TIMESTAMP_MS RETURNS INT SONAME 'unix_timestamp_ms.so';

Надеюсь, это поможет, Сильвиу

0 голосов
/ 28 декабря 2015

В PostgreSQL мы используем такой подход:

SELECT round(EXTRACT (EPOCH FROM now())::float*1000)
...