2016-04-05 4 views
2

Iがデータベースから作成し、更新時刻を引き出しMySQLのクエリを有し、UNIX時間にそれらを変更MySQLの減算2つの互いから行及び3行目の表示

SELECT 
    tn, 
    title, 
    UNIX_TIMESTAMP(create_time) AS create_time, 
    UNIX_TIMESTAMP(change_time) AS change_time 
FROM 
    ticket 
WHERE 
    responsible_user_id = 2 
AND ticket_state_id IN (2, 3, 10) 
ORDER BY 
    change_time DESC 

結果が見えます次のように:

+---------+----------------------+-------------+-------------+ 
| tn  | title    | create_time | change_time | 
+---------+----------------------+-------------+-------------+ 
| 7409025 | Re: otrs    | 1459861204 | 1459861263 | 
| 7408967 | [email protected] | 1459765215 | 1459836797 | 
| 7408935 | FW: Vod    | 1459767210 | 1459836797 | 

行は、AVEと呼ばれる新しい行に結果を表示するようにはどうすればCREATE_TIME行からCHANGE_TIME行を引くありません。

+---------+----------------------+-------------+-------------+------+ 
| tn  | title    | create_time | change_time | ave | 
+---------+----------------------+-------------+-------------+------+ 
| 7409025 | Re: otrs    | 1459861204 | 1459861263 | 59 | 
| 7408967 | [email protected] | 1459765215 | 1459836797 | 71582| 
| 7408935 | FW: Vod    | 1459767210 | 1459836797 | 69587| 
+0

MySQL 'TIMEDIFF()'またはsimle minus? – mitkosoft

答えて

1

ようになります例

SELECT UNIX_TIMESTAMP(create_time) - UNIX_TIMESTAMP(change_time) as output 

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

です。

SELECT 
    tn, 
    title, 
    UNIX_TIMESTAMP(create_time) AS create_time, 
    UNIX_TIMESTAMP(change_time) AS change_time, 
    (UNIX_TIMESTAMP(change_time) - UNIX_TIMESTAMP(create_time)) AS ave 
FROM 
    ticket 
WHERE 
    responsible_user_id = 2 
AND ticket_state_id IN (2, 3, 10) 
ORDER BY 
    change_time DESC 
+0

を返すでしょう。完璧に動作します – rezizter

0

ループのためにあなたが$ CREATETIME [$ i]のような時間を作成し、$ changeTime [$ i]のように時間を変更取得に仮定し、あなたがこだました後、次に、単一の行の値は、ちょうどこれらの2つの変数を減算し、値は列aveの特定の行に格納されます。

+0

私はOPがクエリを望んでいると思います。私はPHPの言及は表示されません... – Pevara

+0

よく質問マイナス側で行うことができます。彼らはループでフェッチされているようにマイナス値に別の方法を答えた。取得値は、UNIXのタイムスタンプ変換され、それらはループ上でUNIXのタイムスタンプ値 – WebInsight

1

あなたはタイムスタンプで作業しているので、あなたはそのためUNIX_TIMESTAMP機能を使用する必要があります。ここではあなたの最後のクエリはあなたがほとんどでした。この

SELECT 
    tn, 
    title, 
    UNIX_TIMESTAMP(create_time) AS create_time, 
    UNIX_TIMESTAMP(change_time) AS change_time, 
    UNIX_TIMESTAMP(create_time) - UNIX_TIMESTAMP(change_time) AS time_diff 
FROM 
    ticket 
WHERE 
    responsible_user_id = 2 
AND ticket_state_id IN (2, 3, 10) 
ORDER BY 
    change_time DESC 
関連する問題