我有一个有效的select
语句 MySQL ,该语句从持续时间返回days
,hours
,mins
,secs
以秒为单位-
SELECT Name, Zone, Duration,
FLOOR(Duration/60/60/24) as days,
FLOOR(Duration/60/60)%24 as hours,
FLOOR(Duration/60)%60 as mins,
Duration%60 as secs
from duration
我希望每一列都包含2个字符,因此所有数据均为inline
,因此需要以某种方式用零填充任何单个字符
(即,如果天为1,则填充/格式,因此天为01)
我尝试过pad()-
PAD(FLOOR(Duration/60/60/24),2,0) as days
但是这将导致NULL。
任何想法都很感激。
问候 拉尔夫
答案 0 :(得分:0)
这是SEC_TO_TIME()
和SUBSTR()
的工作。
要获取01:02:03
,请使用SEC_TO_TIME(3723)
。
要获取HH,MM,SS的零填充数字,请执行以下操作:
SELECT SUBSTR(SEC_TO_TIME(3723),1,2) HH,
SUBSTR(SEC_TO_TIME(3723),4,2) MM,
SUBSTR(SEC_TO_TIME(3723),7,2) SS
如果您使用整数,例如7
,并且想要文本字符串07
,则可以使用LPAD()
:
SELECT LPAD(7,2,'0')
专业提示:在表中使用TIME
,DATE
,TIMESTAMP
和/或DATETIME
数据类型确实是一个好习惯,因为它允许您分析MySQL提供的所有日期算术。 JDBC提供了从那些数据库端数据类型到Java数据类型的干净转换,从而使它们的操作几乎可以无缝地从数据库到程序。
专业提示:每周大约一个月的时间,一直阅读这两个MySQL参考手册页。了解可用功能使您的工作更加轻松。