2011-08-11 36 views
1

我有一个使用两个不同时间戳的MySQL查询,它们可以被视为一段时间间隔。我需要实施额外的25-30%的差异。例如,如果时间差为30分钟,我需要在5分钟前和5分钟后再申请一次。是否有办法不仅可以获得两个时间戳之间的差异,还可以计算出“百分比是否有时间在一个声明中获得适当的时间间隔?MySQL中两次差异的区间

类似于以下内容,其中x是计算值。

..

DATE_FORMAT(timestamp1 - 间隔X MINUTE, '%M /%d /%Y%R')AS '开始',

DATE_FORMAT(timestamp2 +间隔X MINUTE,'%米/%d /%Y%R')AS '结束',

..

回答

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 
+0

美丽!我在那里工作,但这真的帮了我很多时间。谢谢! – Kevin