2016-08-08 10 views
0

私は指定された日付に基づいてレコードを取得しようとしています。 DBに私はUNIXのタイムスタンプを格納する列を持っています。ユーザーは、日付に基づいてレコードを選択することができます。ユーザーは08/08/2016(たとえば)PHPとMYSQL日付に基づくレコードの検索

これを処理するにはどうすればよいですか?ここで

$query .= "`".$o."` = '".date("Y-m-d",strtotime($v))."' AND "; 

つ以上の列が検索要求中にユーザが標的にされる可能性があるため、我々は、SQL文の一部が構築されている行を参照してください。

何とか私は上記のように、比較のために$o(unixタイムスタンプを格納している列)をY-m-d形式に変換し、SQL文でこの作業を行う必要があります。

ご協力いただければ幸いです。

EDITここ

は私のために働いていたものです:

$query .= " "$ O。。" >= '".strtotime($v)."' AND "。$ o"あなたは大きなテーブルを持っている場合、それが遅くなりますので、しかし、これは、インデックスを使用しません

"WHERE DATE(`$o`) = '".date("Y-m-d",strtotime($v))."'" 

< '".(strtotime($v)+(24*60*60))."' AND ";

+0

'$ o'はUNIXのタイムスタンプですか、列の名前ですか? – Mike

+0

$ oは列の名前です。 – JasonQ

+0

あなたに質問をしてください。 – Mike

答えて

0

あなたのような何かを行うことができます。あなたはインデックスを使用することができるようにしたい場合は、行うことができます。

"WHERE `$o` >= ".date("Y-m-d",strtotime($v))." 
    AND `$o` < ".date("Y-m-d",strtotime($v))." + INTERVAL 1 DAY" 
0

また、このアプローチを試してみてくださいとMySQLにUNIX_TIMESTAMPを使用することができます。

$v = '2016-08-04'; 
$query .= "'".$o."' = UNIX_TIMESTAMP('$v') AND ";