2012-01-05 22 views
2

mysqlの今()関数

$now = date('Y-m-d H:i:s', time()) 
SELECT * FROM table WHERE '$now' > time 

がそれです:

SELECT * FROM table WHERE now() > time 
+2

mysqlコンソールにアクセスして確認してください... –

答えて

9

あなたの第二の例では、それを行うための正しい純粋なSQLの方法です。

SELECT * FROM table WHERE NOW() > `time` 

私はtime値がnow`前だと思うし、より良い論理的な意味を成しているようだとして、それらを逆にすることがより読み見つけるが。これは本当に違いはなく、私の好みに基づいています。

SELECT * FROM table WHERE `time` < NOW() 

あなたは私にはないDATE_SUB()

SELECT * FROM table WHERE `time` < DATE_SUB(NOW(), INTERVAL 5 MINUTE) 
+0

ここで、マイナス5分とはどういうことですか? – user1022585

+0

@ user1022585私の答えに追加を参照してください... –

-2

を使用し、5分前と比較するため、例えば、クエリにdescribed in the MySQL documentation.

を使用することができ、より多くのネイティブのMySQL日付関数があります。理解の質問 - 最初の例は、あなたのPHPのバックエンドに従って日付を計算することです、秒はmysqlサーバの組み込み関数を使用しています。本質的な効果は同じです。

あなたが今考えたことがあれば、mysqlのnow()関数は確定的です(スレーブに正しく複製されます)。したがって、マスタスレーブ環境でも、PHPのバックエンドとSQLサーバクロックを同期させる。

あなたのPHPバックエンドとmysqlクロックが同期していない場合は、両方のコードスニペットに違いがありますが、通常の環境ではこれは起こりません。少なくとも関係はありません。

+0

が間違っています。最初のものはWebサーバーからの時刻を返し、2番目の時刻はデータベースサーバーから返します。 – Aaron

+0

私が言ったように、1つはPHPバックエンドによって計算され、2番目はMySQLサーバによって計算されます。ほとんどのアプリで両方の日付が同じである(または違いが1秒未満で無関係である)と想定するのは安全です。どの日付が正しいか(phpかmysqlか)を判断するのは無意味です。両方とも同じでなければならず、同じように間違っているかもしれません.phpとmysqlの両方がタイムサーバではありません。私たちはあなたの最初の投稿がそれほど詳細ではなかったことを「良い」日付とするのに十分な文脈を持っていません。 –

+0

それは基本的に「彼らは同じだ、どちらを使うかは問題ではない」と言っていた。これは正しくありません。 – Aaron