020*_*402 7 mysql timestamp type-conversion
我的MySQL版本是5.6;它有一个FROM_UNIXTIME功能。但它适用于 10 位数字的时间戳:1447430881。
mysql> SELECT FROM_UNIXTIME(1447430881);
-> '2015-11-13 10:08:01'
Run Code Online (Sandbox Code Playgroud)
现在我想从毫秒时间戳中获取日期(例如 1556948248000),所以使用FROM_UNIXTIME我得到了NULL.
mysql> SELECT FROM_UNIXTIME(1556948248000);
-> NULL
Run Code Online (Sandbox Code Playgroud)
不是有一个FROM_UNIXMILLITIME功能吗?
通用解决方案(用于datetime >= '2001-09-09 04:46:40'- 请参阅评论)。
SELECT FROM_UNIXTIME(@time * POWER(10, 9 - FLOOR(LOG10(@time))));
Run Code Online (Sandbox Code Playgroud)
@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))));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13586 次 |
| 最近记录: |