pad()选择显示2个字符

时间:2018-08-02 10:29:21

标签: mysql jsp datetime jdbc time

我有一个有效的select语句 MySQL ,该语句从持续时间返回dayshoursminssecs以秒为单位-

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。

任何想法都很感激。

问候 拉尔夫

1 个答案:

答案 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')

专业提示:在表中使用TIMEDATETIMESTAMP和/或DATETIME数据类型确实是一个好习惯,因为它允许您分析MySQL提供的所有日期算术。 JDBC提供了从那些数据库端数据类型到Java数据类型的干净转换,从而使它们的操作几乎可以无缝地从数据库到程序。

专业提示:每周大约一个月的时间,一直阅读这两个MySQL参考手册页。了解可用功能使您的工作更加轻松。