比較|表示
主な引数は 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) を再度実行する必要があるのかと思いました。今すぐ試してみましょう
+---------------+ | to_days (now()) -5 | +---------------+
+------ - ------------------+
OK、万歳、ついに望んでいた結果が得られました(笑)これが PHP コード内の SELECT クエリです
。
データベースを保存するときは、NOW() を使用して DATEANDTIME の値を直接代入するのが習慣です。表示するときにフォーマットする必要はありません。取り出してすぐに使用できます。
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 は変数として設定できます
Then $ limitdays は GET メソッドで渡すことができます (ほとんどの場合 GET メソッドで渡されます)
UNIX スタンプを使用しているという友人もいます。そのような結果を得るには、誰がそのようなコードを書いたのでしょうか? みんなの参考と比較のために投稿して、PHP 関数または MYSQL 関数の実装の方が効率的であるかどうかを判断することもできます。