将小数分钟转换为 Minutes:Seconds?
Convert decimal minutes into Minutes:Seconds?
任何人都知道是否有将十进制分钟转换为 Minutes:Seconds 的函数
雪花?
例如:
input: 8.5 (as in 8.5 minutes)
output: 8:30 (as in 8 minutes 30 seconds)
来源:https://twitter.com/jasongrahn/status/1420768503133401095
只需从部分构建日期,并将小数点与整数分钟分开。
为方便起见,您可以创建一个 SQL UDF:
create function from_decimal_minutes(minutes float)
returns time
as $$
time_from_parts(0, floor(minutes), 60*(minutes-floor(minutes)))
$$
;
select from_decimal_minutes(8.5);
-- 00:08:30
;
使用 TIMEADD 添加自午夜以来的秒数:
SELECT TIMEADD(second, 8.5 * 60, '00:00'::TIME) AS res;
--arg
输出:
RES
00:08:30
将已经提供的两个优秀解决方案放在一起:
SELECT TIME_FROM_PARTS(0,0,8.5*60)
这很好,因为它是直的 SQL - UDF's may not perform as quick
TIME_FROM_PARTS 不仅可以传递秒,还可以传递分钟、纳秒等
如果超过 1 天就切换到 TIMESTAMP_FROM_PARTS
下面我用 510 万纳秒返回 1 个月 28 天 40 分钟。这证明了可以始终优雅地使用的内置函数的可扩展性。
任何人都知道是否有将十进制分钟转换为 Minutes:Seconds 的函数 雪花?
例如:
input: 8.5 (as in 8.5 minutes)
output: 8:30 (as in 8 minutes 30 seconds)
来源:https://twitter.com/jasongrahn/status/1420768503133401095
只需从部分构建日期,并将小数点与整数分钟分开。 为方便起见,您可以创建一个 SQL UDF:
create function from_decimal_minutes(minutes float)
returns time
as $$
time_from_parts(0, floor(minutes), 60*(minutes-floor(minutes)))
$$
;
select from_decimal_minutes(8.5);
-- 00:08:30
;
使用 TIMEADD 添加自午夜以来的秒数:
SELECT TIMEADD(second, 8.5 * 60, '00:00'::TIME) AS res;
--arg
输出:
RES
00:08:30
将已经提供的两个优秀解决方案放在一起:
SELECT TIME_FROM_PARTS(0,0,8.5*60)
这很好,因为它是直的 SQL - UDF's may not perform as quick
TIME_FROM_PARTS 不仅可以传递秒,还可以传递分钟、纳秒等
如果超过 1 天就切换到 TIMESTAMP_FROM_PARTS
下面我用 510 万纳秒返回 1 个月 28 天 40 分钟。这证明了可以始终优雅地使用的内置函数的可扩展性。