0

3 つの重要なタイムスタンプと時刻をデータベース テーブルに保存しました。形式は次のとおりです。

mysql> select receivedtime, requesttime, sla from table;
+---------------------+---------------------+----------+
| receivedtime        | requesttime         | sla      |
+---------------------+---------------------+----------+
| 2013-05-26 22:37:04 | 2013-05-26 12:37:04 | 02:59:59 |
| 2013-05-26 14:36:44 | 2013-05-21 12:39:09 | 72:00:00 |
+---------------------+---------------------+----------+
2 rows in set (0.00 sec)

以下のようないくつかの条件を設定する必要があります。

difference = (receivedtime - requesttime);

if [difference <= sla] 
{
   show meet
} else {
   show don't meet
}

伝説:

receivedtime [timestamp] as because days 
requesttime [timestamp] as because days 
sla [time] as because hour

私はのと他のいくつかの試みをチェックUNIX_TIMESTAMP()しました。mysql, strtotime()php

また、いくつかのスレッド @ stackoverflow.com を確認しましたが、適切な解決策が見つかりません。

何か案は...!

4

6 に答える 6

2

Check TIMESTAMPDIFF() and SEC_TO_TIME() functions:

SELECT
    `receivedtime`,
    `requesttime`,
    `sla`,
    (SEC_TO_TIME(TIMESTAMPDIFF(SECOND, `requesttime`, `receivedtime`)) < `sla`) as `meet`
FROM
    `table`;
于 2013-05-28T08:35:42.467 に答える
1

試す

SELECT receivedtime, 
       requesttime,
       CASE WHEN TIMESTAMPDIFF(SECOND, requesttime, receivedtime) < TIME_TO_SEC(sla) 
            THEN 'meet' ELSE 'don\'t meet' END sla
  FROM table1

これがSQLFiddleのデモです

于 2013-05-28T08:46:19.930 に答える
0

SQLでそれを行うことができます

SELECT (UNIX_TIMESTAMP(receivedtime) - UNIX_TIMESTAMP(requesttime)) AS difference FROM table

秒単位で違いが得られます。

于 2013-05-28T08:35:24.250 に答える
0

これは、タイムスタンプ フィールドではなく、日時フィールドです。タイムスタンプとは何かを読むことから始めるべきです。

タイムスタンプに変換してから減算することで、違いを把握できます。

$recieved = strtotime($res['receivedtime']);
$requested = strtotime($res['requesttime']);
$difference = $recieved - $requested;
if($difference <= $sla){
  //do stuff
}
于 2013-05-28T08:32:19.180 に答える