我有一个选择查询:
string checkprogress = "SELECT TIMEDIFF(CURRENT_TIMESTAMP,timestamp) FROM times";
作为回报,我得到了一个不必要的前导零格式。。。
00:01:39 //(hours:minutes:seconds)
如何修改这个查询或修改我的c代码,以便我的字符串排除时间戳中所有不必要的零?
请记住,如果时间超过24小时,字符串将变为:
1.00:01:39 //(day.hours:minutes:seconds)
上面的格式非常好,因为包含了一个日值,所以我要找的格式更改是严格针对日值无效的情况(即时间低于23:59:59的情况)。
2条答案
按热度按时间e1xvtsh31#
它不漂亮,但很管用。
结果
21:02:59
```SET @endDate = '2020-06-27 10:02:00';
SET @startDate = '2020-06-26 09:59:01';
SELECT
CONCAT(
IF(FLOOR(TIMESTAMPDIFF(SECOND, @startDate, @endDate) / 86400) > 0,CONCAT(FLOOR(TIMESTAMPDIFF(SECOND, @startDate, @endDate) / 86400), '.'),''),
LPAD(FLOOR((TIMESTAMPDIFF(SECOND, @startDate, @endDate) % 86400)/3600),2,'0'), ':',
LPAD(FLOOR((TIMESTAMPDIFF(SECOND, @startDate, @endDate) % 3600)/60),2,'0'), ':',
LPAD((TIMESTAMPDIFF(SECOND, @startDate, @endDate) % 60),2,'0')
)
kq0g1dla2#
如果您使用的是mysql 8+,那么可以使用
REGEXP_REPLACE
:对于早期版本,您可以调用
TRIM
两次,第一次修剪00:
从弦上切下,然后再切下任何一根引线0
学生:在这两种情况下,输出都是
有一个警告
TRIM
方法,如果结果可以00:00:00
输出将是一个空字符串。可以在应用程序中处理,也可以使用IF
要检查的表达式:在dbfiddle上演示