舍入微秒到毫秒MySQL

时间:2017-01-26 16:29:50

标签: mysql datetime math milliseconds

如何在mysql中将微秒数转换为毫秒?

例如,在datetime(6)列中,我们如何围绕

2016-12-01 12:30:01.122456至2016-12-01 12:30:01.122

2016-12-01 12:30:01.122501至2016-12-01 12:30:01.123

由于

1 个答案:

答案 0 :(得分:1)

尝试此查询:

SELECT FROM_UNIXTIME(TO_SECONDS(dt) -
                     TO_SECONDS('1970-01-01 00:00:00') +
                     (ROUND(MICROSECOND(dt) / 1000, 0) / 1000)) AS new_dt
FROM yourTable

此处dt是您的datetime列。为了便于解释,我将使用2016-12-01 12:30:01.122456作为示例来细分上述查询。

MICROSECOND(dt) = 122456
ROUND(MICROSECOND(dt) / 1000, 0) = 122

然后

(ROUND(MICROSECOND(dt) / 1000, 0) / 1000)) = 0.122

所以0.122datetime中的小数秒数,它在舍入后不包含微秒范围内的任何精度。

TO_SECONDS(dt) = # seconds EXCLUDING the fractional part

最后,我们从第0年开始采用dt中的秒数,并减去从第0年到第1年开始的秒数。自从纪元开始以来,我们在dt中留下了秒数。然后,我们将除小数部分之外的秒数添加到0.122,以获得所需新datetime的总秒数。最后,我们使用FROM_UNIXTIME()将此秒数转换为真正的datetime