ホームページ >php教程 >php手册 >日付比較を実装し、5日以内と10日以内のレコードを表示する方法

日付比較を実装し、5日以内と10日以内のレコードを表示する方法

WBOY
WBOYオリジナル
2016-06-21 09:06:451268ブラウズ

比較|表示

主な引数は SELECT something FROM table
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 5; に焦点を当てています。 長い間試しましたが、結果はまだ間違っていました。今日やっと見つけた MYSQL 関数。その結果を自分だけのものにする勇気がないので、皆さんの勉強のために投稿します (技術的な内容は高くありませんが、私に投げないでください (笑) )。

MYSQLのTO_DAYS(DATE)関数は次のように説明されています: DATEを西暦0年の合計日数に戻してテストしました
mysql>select to_days(now(0)); -------------------- -+
| 今日(今()) | --------+
| 730839 |
+---- ----------+


現在時刻から西暦 0 年までの合計日数を求めて、上記のステートメントでテストしてみました

mysql>select TO_DAYS(NOW()) - TO_DAYS(date_col) <= 5; 結果表示されます: エラー 1054:不明な列 'date_col' in 'field first'


この道路はブロックされています。第 5 世代を date_col に直接入れてみます

mysql>select to_days(now()) - to_days(5); 結果は次のようになります: +--------------- -------------+

|to_days(now()) - to_days( 5)|

+--------------- -------+ +----- ----------------------+



え?とんでもない?これもうまくいきませんか?
次にコマンド
mysql>select を試します。 。 。 。

突然、to_days(now()) は整数を返すのに、なぜわざわざ to_days(date) を再度実行する必要があるのか​​と思いました。今すぐ試してみましょう

mysql>select to_days(now()) - 5;

+---------------+ | to_days (now()) -5 | +---------------+

+------ - ------------------+




OK、万歳、ついに望んでいた結果が得られました(笑)これが PHP コード内の SELECT クエリです

データベースを保存するときは、NOW() を使用して DATEANDTIME の値を直接代入するのが習慣です。表示するときにフォーマットする必要はありません。取り出してすぐに使用できます。

以下は、その 1 つの部分的な構造です。私のライブラリCREATE TABLE infomess (

infoid int( 11) NOT NULL auto_increment,
topic varchar(255) NOT NULL,

……

email varchar(50),

dateandtime datetime DEFAULT '0000-00-00 00:00: 00' NOT NULL,

PRIMARY KEY (infoid)
);


ここでの DATEANDTIME は標準の日付形式であり、5 日以内のレコードをクエリしたいとします。 以下は SQL クエリ ステートメントです
$sql=" select * from infomess where to_days(dateandtime) >= (to_days(now) ()) - 5) order by infoid desc limit $offset,$psize";

には where to_days(dateandtime) >= (to_days( now()) - 5) で十分で、以下は追加です。 ここの 5 は変数として設定できます

where to_days(dateandtime) >= (to_days(now()) - $limitdays)


Then $ limitdays は GET メソッドで渡すことができます (ほとんどの場合 GET メソッドで渡されます)

PHP で ?limitdays=5 を続けるだけで、$limitdasy を 10 に変更するだけで同じことが表示されます。

上記は使用方法です。 MYSQL 関数を使用してそのような結果を取得するため、上記の結果はテスト済みです。時間の都合上、コードについて質問がある場合は、スレッドで質問してください。ありがとうございます

UNIX スタンプを使用しているという友人もいます。そのような結果を得るには、誰がそのようなコードを書いたのでしょうか? みんなの参考と比較のために投稿して、PHP 関数または MYSQL 関数の実装の方が効率的であるかどうかを判断することもできます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。