Mysql
從 Unix 毫秒時間戳獲取時間
我的 MySQL 版本是 5.6;它有一個
FROM_UNIXTIME
功能。但它適用於 10 位數的時間戳:1447430881。mysql> SELECT FROM_UNIXTIME(1447430881); -> '2015-11-13 10:08:01'
現在我想從毫秒時間戳(例如 1556948248000)中獲取日期,所以使用
FROM_UNIXTIME
I gotNULL
。mysql> SELECT FROM_UNIXTIME(1556948248000); -> NULL
沒有
FROM_UNIXMILLITIME
功能嗎?
通用解決方案(對於
datetime >= '2001-09-09 04:46:40'
- 見評論)。SELECT FROM_UNIXTIME(@time * POWER(10, 9 - FLOOR(LOG10(@time))));
@time
變數包含 unix 時間戳(任何精度)。例如,當它是 時1556948248123
,它被 FROM_UNIXTIME 的參數表達式正規化1556948248.123
,結果將是2015-11-13 19:08:01.123000
。1556948248.123
例如,當變數為 或 時,將獲得相同的結果1.556948248123
。此變數是一個佔位符 - 它可以是欄位名或數字文字。
如果需要,您可以創建自己的 UDF:
CREATE FUNCTION my_from_unixtime(arg DECIMAL(65, 30)) RETURNS DATETIME(6) DETERMINISTIC NO SQL RETURN FROM_UNIXTIME(arg * POWER(10, 9 - FLOOR(LOG10(arg))));