Mysqlは日付範囲の抽出方法を指定します

Mysqlは日付範囲の抽出方法を指定します

データベースを操作する過程では、いくつかの指標を日付別にまとめたり、一定期間内の合計金額をカウントしたりするなど、日付を扱うことが避けられません。

固定の日付であればそのまま直接指定しても問題ありませんが、多くの場合は現在の日付に合わせる必要があります。たとえば、先週の月曜日から先週の日曜日までのデータを抽出し、先月からデータを抽出し、過去 N か月間のデータを抽出します。 。 。

これらすべての要件に共通するのは、現在の日付に依存しているということです。次に、まず現在の日付が今週の何番目か、今月の何番目かなど、現在の日付に関する情報を取得する必要があります。その後、次のステップに進むことができます。

1. 必要な日付範囲を抽出する前に、よく使われる関数をいくつか紹介しましょう。

-- 最初にこの文を実行します SET @t = '2018-07-26 11:41:29';
-- この文をもう一度実行します SELECT DATE(@t) 現在の日付、YEAR(@t) 年、MONTH(@t) 月、WEEK(@t) 今年の週番号、DAY(@t) 今月の日番号、 
HOUR(@t) 時間、MINUTE(@t) 分、SECOND(@t) 秒

実行すると、結果は次のようになります。

2. よく使われる日付の加算と減算の関数をいくつか紹介します。

1. ADDDATE(式, 日数) / SUBDATE(式, 日数):

ADDDAT 関数には 2 つのパラメータがあります。1 つ目は計算する日付である基準日です。2 つ目は間隔式です。例: INTERVAL 1 HOUR。ここで、INTERVAL は間隔を意味し、中央の数字 1 は任意の整数に置き換えることができ、3 番目の時間は日/月/年などの時間単位で置き換えることができます。

SUBDATE の場合も同様ですが、減算演算になります。

完全な使用方法は次のとおりです。

ADDDATE('2018-07-26 11:41:29',INTERVAL 1 HOUR)を選択します。
サブ日付を選択します('2018-07-26 11:41:29'、間隔1時間);

2. DATE_ADD() / DATE_SUB():

使用方法はADDDATE(expr, days) / SUBDATE(expr, days)と同じです。

3. 日付範囲の傍受

次に、上で紹介した日付関数を使用して、日付範囲を傍受できます。

1. 先週

-- 先週の日付範囲を抽出します SELECT CURDATE() NOW、
ADDDATE(ADDDATE(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY),-6),0) 開始日、
ADDDATE(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY),0) 日付まで

2. 先月

-- 先月の場合は SELECT CURDATE() NOW、 
DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY), INTERVAL -1 MONTH) 開始日、
DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) DAY), INTERVAL 0 MONTH) 日付まで

3. 最初の4か月

-- 最初の4か月SELECT CURDATE() NOW、 
ADDDATE(ADDDATE(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY), INTERVAL -4 MONTH) 開始日、
DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) DAY), INTERVAL 0 MONTH) 日付まで

4. 先週の木曜日から今週の水曜日まで

統計が自然な週に基づいて収集されない場合があり、週の開始日と終了日をカスタマイズする必要があります。これは次のように実行できます。

SELECT ADDDATE(DATE_SUB(CURDATE(),INTERVAL (IF(WEEKDAY(CURDATE())IN(3,4,5,6),WEEKDAY(CURDATE()),WEEKDAY(CURDATE())+7 )) + 1 DAY),-3) 開始日
, ADDDATE(DATE_SUB(CURDATE(),INTERVAL (IF(WEEKDAY(CURDATE())IN(3,4,5,6),WEEKDAY(CURDATE()),WEEKDAY(CURDATE())+7 )) + 1 DAY),3)duetodate

これで、時間と日付の情報を抽出し、任意の間隔を傍受できるようになりました。

要約する

上記は、編集者が紹介したMysqlで指定された日付範囲を抽出する方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL でカスタム関数を使用して文字列から数値を抽出する方法

<<:  安全な構成のためにDockerでTLSを有効にする手順

>>:  Vue はシームレスなカルーセル効果 (マーキー) を実現します

推薦する

Linux で fdisk を使用してディスクをパーティション分割する方法

Linux パーティションでよく使用されるコマンド: fdisk、MBR パーティション テーブルの...

一般的なSQL削除ステートメントの原則の違いを理解するだけです

この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違...

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

Jenkinsはマイクロサービスをパッケージ化してDockerイメージを構築し、実行します。

目次環境の準備始める1. GitLabリモートリポジトリがマイクロサービスプロジェクトを作成する2....

MySQL 8.0.12 解凍版インストールチュートリアル個人テスト!

Mysql8.0.12 解凍版のインストール方法をテストしましたので、ご参考までに1. ダウンロー...

HTMLタグのtarget属性の使用法

1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...

HTMLウェブページのMETAタグのコンテンツを書く際のポイント

META タグは、HTML 言語のヘッダー領域にある補助タグです。作成者、日時、Web ページの説明...

jQueryは居住地を選択するためのドロップダウンボックスを実装します

居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...

MySQLは「order by」がどのように機能するかを簡単に理解します

並べ替えの場合、order by は非常に頻繁に使用するキーワードです。インデックスに関するこれまで...

Idea の起動速度を改善し、Tomcat ログの文字化けを解決する方法

目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...

Linuxで新しいユーザーを作成し、指定されたディレクトリへの権限を付与する

1 ユーザーを作成し、ユーザーのルートパスとパスワードを指定します useradd -d /home...

ウェブフロントエンドエンジニアにおすすめのヒント

まず、Webフロントエンドエンジニアの価値についてお話ししましょう。現在、Web製品のインタラクショ...

docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法

フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...

Vueはechart円グラフの凡例のパーセンテージを表示するメソッドを実装します

この記事では主に、echart を使用してパーセンテージを表示する Vue の円グラフデータ部分を紹...

Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。

目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...