ホームページ > データベース > mysql チュートリアル > MySQL で個別の日、月、年のフィールドを結合して日付範囲の比較を実行するにはどうすればよいですか?

MySQL で個別の日、月、年のフィールドを結合して日付範囲の比較を実行するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-24 11:58:18
オリジナル
995 人が閲覧しました

How Can I Combine Separate Day, Month, and Year Fields in MySQL to Perform Date Range Comparisons?

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 オブジェクトを作成し、
  • DATE_ADD(): 指定された間隔 (月または日など) を DATETIME オブジェクトに追加します。

を表す日付オブジェクトを作成するには特定の日付の場合は、次の手順を使用できます:

  1. MAKEDATE() を使用します。指定された年の最初の日の DATETIME オブジェクトを作成するには:

    MAKEDATE(year, 1)
    ログイン後にコピー
  2. DATE_ADD() を使用して DATETIME オブジェクトに月を追加します:

    DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
    ログイン後にコピー
  3. 最後に、次を使用して 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート