Skip to content
Advertisement

Convert unix timestamp to datetime with milliseconds in MySQL

Problem

Converting unix timestamp to datetime while retaining milliseconds.

Background

I am receiving unix timestamp in the following format:

  • 1584049707

Then I am trying to send it by means of PHP to a column in MySQL that is datetime(3) using TO_TIMESTAMP(). I have also tried FROM_UNIXTIME(), but with the same results.

SQL

JavaScript

Result

  • 2020-03-12 22:42:23.000

For some reason it does not register the milliseconds.

Desired outcome

  • To get the milliseconds out of the unix timestamp and into the datetime column.

Advertisement

Answer

Epoch timestamps represent then number of seconds elapsed since January 1st, 1970; if you want fractional secons, it needs to have a fractional part… which is not the case with the input that you are given to MySQL; this is then reflected in the results that you are getting.

Given an epoch timestamp with a fractional part, from_unixtime() works as expected:

JavaScript

Returns:

JavaScript

Note: datetime(3) is the relevant format to store such value.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement