繁体   English   中英

在MySQL中将间隔格式设置为'yyyy-mm-dd hh:MM:ss'

[英]Formatting an interval as 'yyyy-mm-dd hh:MM:ss' in MySQL

我有两列DATETIME,我想将它们的区别显示为'yyyy-mm-dd hh:MM:ss' 我的假设是间隔永远不会变成负数。

我的搜索导致:

SELECT CONCAT(DATEDIFF(`to`, `from`), " ", TIMEDIFF(`to`, `from`))

但是它给出了:

0 00:00:00

但我希望得到:

0000-00-00 00:00:00

有没有人有什么建议?

您可以通过重复调用TIMESTAMPDIFFTIMESTAMPADD来计算时间间隔:

例:

SET @to = CAST('2014-10-03 12:00:00' AS DATETIME);
SET @from = CAST('2011-05-12 13:12:44' AS DATETIME);

-- get the full years
SELECT TIMESTAMPDIFF(YEAR, @from, @to);  -- 3
-- get the months, without full years in between
SELECT TIMESTAMPDIFF(MONTH, TIMESTAMPADD(YEAR, TIMESTAMPDIFF(YEAR, @from, @to), @from), @to); -- 4
-- get the days, without all months in between
SELECT TIMESTAMPDIFF(DAY, TIMESTAMPADD(MONTH, TIMESTAMPDIFF(MONTH, @from, @to), @from), @to); -- 20
-- get the hours, without all days in between
SELECT TIMESTAMPDIFF(HOUR, TIMESTAMPADD(DAY, TIMESTAMPDIFF(DAY, @from, @to), @from), @to); -- 22
-- get the minutes, ...
SELECT TIMESTAMPDIFF(MINUTE, TIMESTAMPADD(HOUR, TIMESTAMPDIFF(HOUR, @from, @to), @from), @to); -- 22
-- and the same for the seconds
SELECT TIMESTAMPDIFF(SECOND, TIMESTAMPADD(MINUTE, TIMESTAMPDIFF(MINUTE, @from, @to), @from), @to); -- 16

这个小提琴中看到它

将这些值的结果连接起来很简单:

SELECT CONCAT(
    LPAD(TIMESTAMPDIFF(YEAR, @from, @to), 4, '0'),
    '-',    
    LPAD(TIMESTAMPDIFF(
        MONTH, 
        TIMESTAMPADD(YEAR, TIMESTAMPDIFF(YEAR, @from, @to), 
        @from), @to), 2, 0),
    '-',
    LPAD(TIMESTAMPDIFF(
        DAY, 
        TIMESTAMPADD(MONTH, TIMESTAMPDIFF(MONTH, @from, @to), 
        @from), @to), 2, 0),
    ' ',
    LPAD(TIMESTAMPDIFF(
        HOUR, 
        TIMESTAMPADD(DAY, TIMESTAMPDIFF(DAY, @from, @to), 
        @from), @to), 2, 0),
    ':',
LPAD(TIMESTAMPDIFF(
        MINUTE, 
        TIMESTAMPADD(HOUR, TIMESTAMPDIFF(HOUR, @from, @to), 
        @from), @to), 2, 0),
    ':',
    LPAD(TIMESTAMPDIFF(
        SECOND, 
        TIMESTAMPADD(MINUTE, TIMESTAMPDIFF(MINUTE, @from, @to), 
        @from), @to), 2, 0)
);
-- result: 0003-04-20 22:47:16

看到它在这个小提琴中起作用。 请考虑结果很容易像0001-02-30 01:12:14 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM