-1

データベースに会議スケジュール用のテーブルがあります。という名前の2つの列がstartありend、このテーブルに新しいデータを入力するphpスクリプトにアクセスできないため、どの形式かわかりません。

しかし、PHPMyAdmin は、開始と終了の列が次のようになっていることを示していますvarchar(15)

DB の例: 1378033200 2013 年 9 月 1 日として表示されます

私の質問は、会議をプルして html ページに表示したいのですが、2 日前 (サーバー時間) より古い会議を表示したくないということです。クエリは何になりますか?

SELECT * FROM schedules ORDER BY start

何かのようなもの

SELECT * FROM schedules ORDER BY start WHERE start > 2 days ago

私はこれを試しましたが、何もしないようです!

SELECT *
FROM schedules 
WHERE COALESCE(start, 0) < CURDATE() - INTERVAL 2 DAY 
ORDER BY start
4

2 に答える 2

1

しかし、PHPMyAdmin は、開始と終了の列が varchar(15) であることを示しているので、datetime と互換性があるはずです。

あなたは間違っていると思いました。文字列は文字列としてのみソート可能です。つまり、ソート可能な日付形式を使用していない限り ( YYYY/MM/DD1 つです: 私は他のものを知りません)、すべての結果を解析し、PHP で自分で計算を行う必要があります (そうしないと、2000 年 11 月 13 日は2000 年 1 月 14 日より前に来てください)。または、列に適切なタイプを使用することもできます: datetime、date または timestamp。これを行うと、データベースにクエリを実行し、日付と演算子を比較できるようになります。<>

その部分については、MySql には、 days を合計/減算できるNOW変数が2 days ago組み込まれていることを知りたいと思います。データベースを正しく設計すれば、PHP に触れる必要さえありません (これは望ましいことです)。

于 2013-10-28T15:13:48.430 に答える