我有一个有效的select
语句MySQL,它返回天
、小时
、分钟
, 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 个字符,这样所有数据都是内联的,因此需要用零填充任何单个字符 (即,如果天数为 1,则填充/格式化,以便天数为 01)
我尝试过 pad() -
PAD(FLOOR(Duration/60/60/24),2,0) as days
但这会导致 NULL。
任何想法表示赞赏。
问候 拉尔夫
最佳答案
这是 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 引用手册页。了解您可以使用的功能可以让您的工作变得更加轻松。
关于mysql - pad() 选择显示 2 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651344/