2011-01-04 18 views
3

MySQLの最後のdatetimeスタンプから1時間経過しているかどうか確認したいと思います。 PHPを使ってどうすればいいですか?MySQL DATETIMEスタンプとの時間比較チェック

+0

私はいつもデータベースのための 'UNIX_TIMESTAMP'をphp側で操作しやすいように保存したいと思っています。 – RobertPitt

+1

@RobertPitt - UNIX_TIMESTAMPを使用することはお勧めしません。 – mauris

+0

@RobertPittあなたは 'DATE_SUB'とその友達を使うのに問題があります。 – alex

答えて

2

これを行う最もクリーンな方法は、MySQLではDATE_SUB(または目標に応じてDATE_ADD)を使用する方法です。たとえば、次のように

SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR) 

同様に、あなたが「1 DAY」またはように「1分」など他のものとの「1 HOUR」を置き換えることができます。私はいつも日付が共通のフォーマットとGMTオフセットで保存されていると思われるので、データベースレベルで日付比較をすることをいつも好みます。

0

このlinkは、PHP> = 5.3のdate_diffについて説明しています。また、古いバージョンの解決策を回避するものもあります。

0
$db_time = strtotime($row->timestamp_col); 
$age = 60 * 60; 
if ($db_time < (time() - $age)) { 
    doSomething(); 
} 

これは不必要に分解され、どのように動作するかを見ることができます。

0
$now = time(); 

$dbDate = strtotime($row['datetime']); 

if ($now > $dbDate + 3600) { 
    // yes 
} 
3

あなたは、おそらく代わりに、MySQLでこの全体のことを行う必要がある可能性があり

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

あなたのクエリを使用して日時フィールドと現在時刻との時差を確認し、その結果を返すことができます行。

+0

私はあなたがこれを行うことができるか分からなかったので、私はPHPを選んだのです。 – Strawberry

+0

だから 'TIMEDIFF(CURTIME()、$ dbDateTime)'を使うのは正しいでしょうか?私は例を得ることができますか? – Strawberry

+0

あなたはまだphp変数を使用しているようですか? db datetimeフィールドを直接データベースから取り出します。 SELECT TIMEDIFF(CURTIME()、name_of_datetime_field)のようなものです。AS time_diff FROM table_name WHERE id = blah LIMIT 1などです。データベースから日時の値を取得しているのと同じクエリで取得します。 – dqhendricks

0

このチェックをクエリに入れます。その後、MySQLの日付比較を使用することができ、PHPはそれを知っているか気にする必要はありません。