2011-08-11 40 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