如何在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
由于
答案 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.122
是datetime
中的小数秒数,它在舍入后不包含微秒范围内的任何精度。
TO_SECONDS(dt) = # seconds EXCLUDING the fractional part
最后,我们从第0年开始采用dt
中的秒数,并减去从第0年到第1年开始的秒数。自从纪元开始以来,我们在dt
中留下了秒数。然后,我们将除小数部分之外的秒数添加到0.122
,以获得所需新datetime
的总秒数。最后,我们使用FROM_UNIXTIME()
将此秒数转换为真正的datetime
。