MySQL中两次差异的间隔

时间:2011-08-11 21:36:06

标签: mysql

我有一个MySQL查询,它使用两个不同的时间戳,可以被视为一个时间间隔。我需要额外实现25-30%的差异。例如,如果时间之间的差异是30分钟,我需要在5分钟前和5分钟后再请求..是否有办法不仅可以获得两个时间戳之间的差异,而且还可以计算这个百分比是时候在一个陈述中获得适当的间隔?

如下所示,其中x是计算值。

...

DATE_FORMAT(timestamp1 - INTERVAL x MINUTE,'%m /%d /%Y%r')AS'Start',

DATE_FORMAT(时间戳2 +间隔x分钟,'%m /%d /%Y%r')AS'结束',

...

1 个答案:

答案 0 :(得分:2)

数据库中有一个开始时间戳和结束时间戳。您希望根据它们之间的时间跨度为这些值添加额外的时间百分比。换句话说,如果不知道两者之间的差异,就无法增加或减少任何时间。

所以,首先你必须弄清楚时间跨度。我将使用分钟作为单位,但使用最符合您需求的任何内容:

SELECT
    @new_span := TIMESTAMPDIFF(MINUTE, timestamp1, timestamp2) * 1.25 new_span,
    DATE_SUB(timestamp1, INTERVAL (@new_span*60)/2 SECOND) AS new_start,
    DATE_ADD(timestamp2, INTERVAL (@new_span*60)/2 SECOND) AS new_end,
    TIMESTAMPDIFF(MINUTE, timestamp1, timestamp2) old_span,
    timestamp1 AS previous_start,
    timestamp2 AS previous_end
FROM table;

因此,此查询将两次加25%的差异存储为名为new_span的变量。 new_startnew_end字段使用变量(转换为秒并分为两半)来修改原始开始/结束时间。我也选择old_span和原始的开始/结束时间进行比较。

以下是示例输出:

new_span  new_start            new_end              old_span  previous_start       previous_end         
1.25      2011-08-11 15:53:22  2011-08-11 15:55:38  1         2011-08-11 15:54:00  2011-08-11 15:55:00  
1350.00   2011-08-09 00:45:00  2011-08-10 17:15:00  1080      2011-08-09 12:00:00  2011-08-10 06:00:00