MySQL での比較のための日付フィールドの結合
日付ベースの検索フィルターを使用するアプリケーションでは、データベース スキーマを操作するのが難しい場合があります日付コンポーネントを日、月、年の個別のフィールドに保存します。この記事では、これらのフィールドを組み合わせて、ユーザー指定の日付範囲と比較するための日付オブジェクトを作成する方法を説明します。
次の「日付」テーブル構造を考えてみましょう。
CREATE TABLE `date` ( `deposition_id` varchar(11) NOT NULL default '', `day` int(2) default NULL, `month` int(2) default NULL, `year` int(4) default NULL, PRIMARY KEY (`deposition_id`) );
日付を構築するにはこれらのフィールドから、MySQL は次の関数を提供します。
を表す日付オブジェクトを作成するには特定の日付の場合は、次の手順を使用できます:
MAKEDATE() を使用します。指定された年の最初の日の DATETIME オブジェクトを作成するには:
MAKEDATE(year, 1)
DATE_ADD() を使用して DATETIME オブジェクトに月を追加します:
DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
最後に、次を使用して DATETIME オブジェクトに日を追加します。 DATE_ADD():
DATE_ADD(..., INTERVAL (day)-1 DAY)
これらの関数を組み合わせることにより、個々の日、月、年のフィールドから完全な日付オブジェクトを構築できます。この日付オブジェクトは、日付範囲の比較に使用できます。
SELECT * FROM `date` WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY) BETWEEN '2013-01-01' AND '2014-01-01';
このクエリは、結合された日付が指定された範囲内にある「日付」テーブル内のすべてのレコードを取得します。 MAKEDATE() と DATE_ADD() の組み合わせを利用することで、開発者は、別のフィールドに保存されている場合でも、日付を効果的に操作および比較できるようになります。
以上がMySQL で個別の日、月、年のフィールドを結合して日付範囲の比較を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。