この記事では、例を使用して、MySQL の日付と時刻の間隔計算について説明します。ご参考までに、詳細は以下の通りです。 まず、MySQL の間隔値は主に日付と時刻の計算に使用されることを明確にする必要があります。間隔値を作成する場合は、次の式を使用できます。 区間式単位 次に、INTERVAL キーワードは間隔値を決定する expr であり、間隔の単位を指定する unit であることを理解する必要があります。 たとえば、1 日の間隔を作成するには、次の式を使用します。 間隔 1日 ただし、INTERVAL と UNIT は大文字と小文字を区別しないため、次の式は上記の式と同等になります。 間隔 1日 日付と時刻の演算における間隔値の実際の使用法と構文は、次のコードで確認できます。 日付 + INTERVAL 式 単位 日付 - INTERVAL 式 単位 間隔値は、DATE_ADD、DATE_SUB、TIMESTAMPADD、TIMESTAMPDIFF などのさまざまな時間関数でも使用されます。 MySQL では、次の表に示すように、expr と unit の標準形式が定義されています。
例を見てみましょう。次の SQL ステートメントは、日付 2020-01-01 に 1 日を追加し、結果を 2020-01-02 として返します。 mysql> '2020-01-01' + 間隔 1 日を選択します。 +---------------------------------+ | '2020-01-01' + 間隔 1 日 | +---------------------------------+ | 2020-01-02 | +---------------------------------+ セット内の1行(0.01秒) DATE 値または DATETIME 値を含む式で間隔値を使用し、間隔値が式の右側にある場合は、次の例に示すように、expr の負の値を使用できます。 mysql> '2020-01-01' + 間隔 -1 日を選択します。 +--------------------------------+ | '2020-01-01' + 間隔 -1 日 | +--------------------------------+ | 2019-12-31 | +--------------------------------+ セット内の1行 DATE_ADD と DATE_SUB を使用して日付値に 1 か月を加算/減算する方法を見てみましょう。 mysql> SELECT DATE_ADD('2020-01-01', INTERVAL 1 MONTH) 1_MONTH_LATER, DATE_SUB('2020-01-01',間隔1か月) 1_MONTH_BEFORE; +---------------+----------------+ | 1 か月後 | 1 か月前 | +---------------+----------------+ | 2020-02-01 | 2019-12-01 | +---------------+----------------+ セット内の1行 TIMESTAMPADD(unit, interval, expression) 関数を使用してタイムスタンプ値に 30 分を追加する SQL ステートメントを見てみましょう。 mysql> SELECT TIMESTAMPADD(MINUTE,30,'2020-01-01') 30_MINUTES_LATER; +---------------------+ | 30_分後 | +---------------------+ | 2020-01-01 00:30:00 | +---------------------+ セット内の1行 ここまで説明しても、まだ少し混乱しているかもしれません。心配しないでください。具体的な操作を見てみましょう。デモ用に、members という新しいテーブルを作成します。 CREATE TABLEメンバーシップ( id INT AUTO_INCREMENT 主キー、 電子メール VARCHAR(355) NOT NULL, プラン VARCHAR(255) NOT NULL、 期限切れ日 日付 NULL ではありません ); 上記のメンバーシップ テーブルでは、expired_date 列に各メンバーのメンバーシップの有効期限が格納されています。次に、メンバーシップ テーブルにデータを挿入してみましょう。 メンバーシップに挿入(メール、プラン、有効期限) 値('[email protected]','ゴールド','2018-07-13'), ('[email protected]','プラチナ','2018-07-10'), ('[email protected]','シルバー','2018-07-15'), ('[email protected]','ゴールド','2018-07-20'), ('[email protected]','シルバー','2018-07-08'); ここで、今日が 2018-07-06 であると仮定し、SQL ステートメントを使用して、今後 7 日以内にメンバーシップの有効期限が切れるメンバーを照会します。 選択 メール、 プラン、 期限切れ日、 DATEDIFF(有効期限, '2018-07-06') 残り日数 から 会員 どこ '2018-07-06' BETWEEN DATE_SUB(expired_date, INTERVAL 7 DAY) AND expired_date; 上記のクエリステートメントを実行すると、次の結果が得られます。 +--------------------------+----------+--------------+----------------+ | メール | プラン | 有効期限 | 残り日数 | +--------------------------+----------+--------------+----------------+ | [email protected] | ゴールド | 2018-07-13 | 7 | | [email protected] | プラチナ | 2018-07-10 | 4 | | [email protected] | シルバー | 2018-07-08 | 2 | +--------------------------+----------+--------------+----------------+ 3行セット 上記のSQLでは、DATE_SUB関数は、間隔値(INTERVAL 7 DAY)で指定された有効期限から7日を減算します。つまり、あるデータの元の日付が13日の場合、7日を減算すると6日になります。大体こういう意味です。皆さんもある程度は理解していると思います。 今日はこれで終わりです。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
>>: OpenSSL は双方向認証のチュートリアルを実装します (サーバーとクライアントのコード付き)
この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...
1. MySQL ログイン設定を変更します。 # vim /etc/my.cnf文を追加: skip...
MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...
ブロック要素HTMLタグ分類の詳細* 住所 - 住所* blockquote - ブロック引用* c...
MySQL によって作成される最適化はインデックスを追加することですが、インデックスを追加しても目的...
Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...
Docker はますます成熟し、その機能もますます強力になっています。 Docker Stack を...
BGCOLOR 属性を使用して、行の背景色を設定できます。基本的な構文<TR BGcolor...
この記事の例では、メモ帳の小さな機能を実現するためのvueの具体的なコードを参考までに共有しています...
目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...
[必須] ユーザーインターフェースPhotoShop/花火デザインアーティストと協力して、スケッチを...
この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...
この記事では、WeChatアプレットの具体的なコードを共有し、簡単なチャットルームを実装します。具体...
以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピーbody、di...
「ページのスクリーンショット」は、ページポスターの生成、ポップアップ画像の共有など、フロントエンドで...