1
在mysql中將微秒舍入到毫秒的最佳方式是什麼?將微秒舍入到毫秒MySQL
例如,在日期時間(6)列,我們如何圓
2016年12月1日12:30:01.122456至2016年12月1日12:30:01.122
和
2016年12月1日12:30:01.122501至2016年12月1日12:30:01.123
感謝
在mysql中將微秒舍入到毫秒的最佳方式是什麼?將微秒舍入到毫秒MySQL
例如,在日期時間(6)列,我們如何圓
2016年12月1日12:30:01.122456至2016年12月1日12:30:01.122
和
2016年12月1日12:30:01.122501至2016年12月1日12:30:01.123
感謝
嘗試此查詢:
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
最後,我們採取的秒數在dt
年以來0和0年減去關閉的秒數時代的開始。自從這個時代開始以來,這給我們留下了dt
秒的時間。然後,我們將除小數部分之外的秒數加到0.122
以獲得期望的新的datetime
的總秒數。最後,我們使用FROM_UNIXTIME()
將此秒數轉換回真誠的datetime
。
這似乎不工作FROM_UNIXTIME結果爲空值。 TO_SECONDS的作品,但FROM_UNIXTIME將其設置爲NULL ..任何想法?謝謝 –
SELECT FROM_UNIXTIME(TO_SECONDS('2015-12-11 12:31:04.080000')+ (ROUND(MICROSECOND('2015-12-11 12:31:04.080000')/ 1000,0)/ 1000))AS new_dt導致空值,但是如下:select TO_SECONDS('2015-12-11 12:31:04.080000')+ (ROUND(MICROSECOND('2015-12-11 12:31:04.080000')/ 1000, 0)/ 1000)返回一個值.. –
'MICROSECOND('2015-12-11 12:31:04.080000')'給你什麼? –