データベースに、開始日とその後の終了日としてユーザー入力を格納するテーブルがあります。ユーザーは時間範囲を選択する必要があり、この時間範囲内のレコードをテーブルに表示する必要がありますか?
他の多くの機能を試しstritotime();
ましたが、どういうわけか正しい結果を得ることができません。
任意の可能な解決策をいただければ幸いです。
ありがとうございました!
一緒にある可能性があります:
SELECT count(*) FROM `table`
where
created_at>='2011-03-17 06:42:10' and created_at<='2011-03-17 06:42:50';
または間で使用:
SELECT count(*) FROM `table`
where
created_at between '2011-03-17 06:42:10' and '2011-03-17 06:42:50';
私はあなたのテーブルを見なかったのであなたが何を表示したいかはあなたのレコードに依存し、あなたが実際に何をするかを例示するので、count(*)を変更してあなたが望むwhatrecordsを取得してください。
編集:ユーザーが時間の範囲を選択する場合、それらは変数になります
それならそのようなものになります
SELECT records FROM `table`
where
created_at >= '".$var_start_time."' and ended_at <= '".$var_end_time."';
mysqlクエリで使用できます...と...比較演算子 http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
これはSQLで簡単に実行できます。これは、推奨されるアプローチです。たとえば、これらの開始時刻と終了時刻がネイティブのDateTimeタイプとしてデータベーステーブルに格納されている場合、DBMSのDate関数を使用して、UNIXタイムスタンプとして範囲を選択できます(必要な場合)。
SELECT UNIX_TIMESTAMP(`start_time`), UNIX_TIMESTAMP(`end_time`) FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW();
start_time
これは(MySQLを使用していると仮定して)列が過去24時間以内で、end_time
列が現在のサーバー時間までであるテーブル内のすべての行を選択する1つの例です。
フォーマットされた日付を取得してから、PHPでUNIXタイムスタンプに変換するには、次のコマンドを使用します。
SELECT `start_time`, `end_time` FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW();
そして、PHPでは次のことができます。
$result['start_time'] = strtotime($result['start_time']);
$result['end_time'] = strtotime($result['end_time']);
strtotimeは、フォーマットされた日付がここにあるPHPの日付解析ルールに準拠していることを期待していることに注意してください。
PS:あなたが探しているPHPの関数は、stritotimeではなくstrtotimeです。