【发布时间】:2011-06-09 08:30:14
【问题描述】:
主题说明了一切。我正在尝试通过一个函数来做一些魔术,将第二个整数转换为字符串“DD:HH:MM:SS”。
截图
输入:278543
输出:“3D 5H 22M 23S”
如果可能的话,我想做的更优雅的是填充数字(以便 5M 显示为 05M)并将它们右对齐,以便“3D 5H 22M 23S”改为“3D 5H 22M 23S”。
edit:最近的剪辑似乎有效。希望它更漂亮,但据我所知,这绝对有效:
CREATE FUNCTION DHMS(secondsElapsed INT)
RETURNS Char(20)
LANGUAGE SQL
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN
DECLARE Dy Integer;
DECLARE Hr Integer;
DECLARE Mn Integer;
DECLARE Sc Integer;
SET Dy = Cast( secondsElapsed / 86400 as Int);
SET Hr = Cast(MOD( secondsElapsed, 86400 ) / 3600 as Int);
SET Mn = Cast(MOD( secondsElapsed, 3600 ) / 60 as Int);
SET Sc = Cast(MOD( secondsElapsed, 60 ) as Int);
RETURN REPEAT(' ',6-LENGTH(RTRIM(CAST(Dy AS CHAR(6))))) || Dy || 'D '
|| REPEAT('0',2-LENGTH(RTRIM(CAST(Hr AS CHAR(6))))) || Hr || 'H '
|| REPEAT('0',2-LENGTH(RTRIM(CAST(Mn AS CHAR(6))))) || Mn || 'M '
|| REPEAT('0',2-LENGTH(RTRIM(CAST(Sc AS CHAR(6))))) || Sc || 'S';
END
【问题讨论】:
-
输入值是否以秒数反映时间?
-
是的。更新澄清。