指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)

指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)

mysql は期間内のすべての日付または月を取得します

1: mysqlは期間内のすべての月を取得します

DATE_FORMAT(date_add('2020-01-20 00:00:00', 間隔行 MONTH),'%Y-%m') 日付を選択
 ( 
    SELECT @row := @row + 1 を行としてFROM 
    (0 を選択 すべて結合 1 を選択 すべて結合 2 を選択 すべて結合 3 を選択 すべて結合 4 を選択 すべて結合 5 を選択 すべて結合 6 を選択 すべて結合 7 を選択 すべて結合 8 を選択 すべて結合 9 を選択) t、
    (0 を選択 すべて結合 1 を選択 すべて結合 2 を選択 すべて結合 3 を選択 すべて結合 4 を選択 すべて結合 5 を選択 すべて結合 6 を選択 すべて結合 7 を選択 すべて結合 8 を選択 すべて結合 9 を選択) t2、 
    (SELECT @row:=-1) r
 )
 ここで、DATE_FORMAT(date_add('2020-01-20 00:00:00', 間隔行 MONTH),'%Y-%m') <= DATE_FORMAT('2020-04-02 00:00:00','%Y-%m')

2: mysqlは期間内のすべての日付を取得します

date_add('2020-01-20 00:00:00', 間隔行DAY) 日付を選択
 ( 
    SELECT @row := @row + 1 を行としてFROM 
    (0 を選択 すべて結合 1 を選択 すべて結合 2 を選択 すべて結合 3 を選択 すべて結合 4 を選択 すべて結合 5 を選択 すべて結合 6 を選択 すべて結合 7 を選択 すべて結合 8 を選択 すべて結合 9 を選択) t、
    (0 を選択 すべて結合 1 を選択 すべて結合 2 を選択 すべて結合 3 を選択 すべて結合 4 を選択 すべて結合 5 を選択 すべて結合 6 を選択 すべて結合 7 を選択 すべて結合 8 を選択 すべて結合 9 を選択) t2、 
    (SELECT @row:=-1) r
 )
 date_add('2020-01-20 00:00:00'、間隔行DAY) <= '2020-03-02 00:00:00'

述べる:

このコードは、データ エントリ数の制限を示します。クエリを 2 つ記述した場合、表示されるデータ エントリの最大数は 100 です。クエリを 3 つ記述した場合、表示されるデータ エントリの最大数は 1000 です。などです。必要に応じて決定できます。

表示されるアイテムの最大数を10,000に設定する方法は次のとおりです。

これが役に立つことを願っています。オンライン初心者で、指導を求めています。 ! !

以下は他のネットユーザーからの補足です。参考までに

1. ストアドプロシージャ、一時テーブル、ループを使用せずに、MySQLで期間内のすべての日付を取得する

日付を選択 
から (
    curdate() を選択 - INTERVAL (aa + (10 * ba) + (100 * ca)) DAY を日付として
    (0を結合として選択、1を結合、2を結合、3を結合、4を結合、5を結合、6を結合、7を結合、8を結合、9を結合)を結合として選択
    クロス結合(0 を結合として選択、すべて結合 1、すべて結合 2、すべて結合 3、すべて結合 4、すべて結合 5、すべて結合 6、すべて結合 7、すべて結合 8、すべて結合 9 を選択)を b として
    クロス結合 (0 を結合として選択、すべて結合 1、すべて結合 2、すべて結合 3、すべて結合 4、すべて結合 5、すべて結合 6、すべて結合 7、すべて結合 8、すべて結合 9) を c として
)
ここで、a.日付は「2017-11-10」から「2017-11-15」の間です。

出力は次のようになります

日付
----------
2017-11-15
2017-11-14
2017-11-13
2017-11-12
2017-11-11
2017-11-10

2. MySQLは2つの日付内のすべての日付のリストを取得します

@num:=@num+1、date_format(adddate('2015-09-01'、INTERVAL @num DAY)、'%Y-%m-%d') を日付として選択します。
btc_user から、(select @num:=0) t where adddate('2015-09-01', INTERVAL @num DAY) <= date_format(curdate(),'%Y-%m-%d')
日付順に並べる。

この方法の利点は、ストアド プロシージャやカレンダー テーブルを作成する必要がないことです。欠点は、クエリする日数をサポートするのに十分なデータを含むテーブルが必要になることです。

3. MySQL は指定された期間内のすべての日付のリストを取得します (ストアド プロシージャ)

区切り文字 $$
存在する場合は削除プロシージャ create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE、e_date DATE) を作成します。
始める
-- カレンダーテーブルを生成する SET @createSql = 'CREATE TABLE IF NOT EXISTS calendar_custom (
`date` 日付はNULLではありません。
ユニークキー `unique_date` (`date`) BTREE の使用
)ENGINE=InnoDB デフォルト文字セット=utf8';
@createSql から stmt を準備します。
ステートメントを実行します。
s_date <= e_date の場合
IGNORE INTO calendar_custom VALUES (DATE(s_date)) を挿入します。
s_date = s_date + 間隔 1 日を設定します。
終了WHILE;
終わり$$
区切り文字 ;
-- 2009-01-01 から 2029-01-01 までのすべての日付のデータを calendar_custom テーブルに生成します。CALL create_calendar ('2009-01-01', '2029-01-01');
区切り文字 $$
存在する場合は削除プロシージャ create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE、e_date DATE) を作成します。
始める
-- カレンダー テーブルを生成します SET @createSql = 'truncate TABLE calendar_custom';
@createSql から stmt を準備します。
ステートメントを実行します。
s_date <= e_date の場合
IGNORE INTO calendar_custom VALUES (DATE(s_date)) を挿入します。
s_date = s_date + 間隔 1 日を設定します。
終了中;
終わり$$
区切り文字 ;
-- 2009-01-01 から 2029-01-01 までのすべての日付のデータを、calendar_custom テーブルに生成します。CALL create_calendar ('2009-01-02', '2009-01-07');

指定された期間内のすべての日付または月を取得するための MySQL ステートメントに関するこの記事はこれで終わりです (ストアド プロシージャの設定やテーブルの追加は不要)。指定された期間内のすべての日付と月を取得するための MySQL ステートメントの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL DATEDIFF 関数を使用して 2 つの日付間の時間間隔を取得する方法
  • 同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ
  • 一定期間の日ごと、時間ごとの統計データを取得するMySQLの詳しい説明
  • 今日と昨日の 0:00 タイムスタンプを取得する MySQL の例
  • mysqlは昨日の日付、今日の日付、明日の日付、前の時間と次の時間の時刻を取得します
  • mysqlは指定された期間内の統計データを取得します
  • MySQLで時間を取得する方法

<<:  srcまたはcss背景画像のurl値はbase64でエンコードされたコードです

>>:  goaccess を使用して nginx ログを分析する詳細な方法

推薦する

docker compose サービスの起動順序を制御する方法

まとめDocker-compose は複数の Docker コンテナ サービスを簡単に組み合わせるこ...

MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...

フレックスレイアウトは左のテキストオーバーフローを実現し、右のテキストの適応を省略します

テキストの長さに応じて、左側のテキストの幅を自動調整できる状況を実現したい。1行が表示できない場合、...

バックエンドから返される 100,000 個のデータをフロントエンドでより適切に表示するにはどうすればよいですか?

目次予備作業バックエンド構築フロントエンドページダイレクトレンダリングsetTimeout ページン...

DockerにELKをインストールしてJSON形式のログ分析を実装する方法

ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...

MySQLの高可用性アーキテクチャの詳細な説明

目次導入MySQL 高可用性マスター 1 つとバックアップ 1 つ: MySQL マスター スレーブ...

Linux でファイルのユーザーとグループを変更する方法

Linux では、ファイルが作成されると、そのファイルの所有者はファイルを作成したユーザーになります...

MySQL の日付と時刻関数の概要 (MySQL 5.X)

1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...

Docker rocketmq デプロイメントの実装例

目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

MySQL 5.7.17 とワークベンチのインストールと設定のグラフィックチュートリアル

この記事では、MySQL 5.7.17ワークベンチのインストールと設定方法を参考までに紹介します。具...

MySQL Limitクエリのパフォーマンスを向上させる方法

MySQL データベース操作では、一部のクエリを実行するときにデータベース エンジンが完全なテーブル...

入力タイプ=ファイルスタイルを定義する方法

ファイルコントロールを美しくする理由は何ですか?他の子供たちはみんなきちんとしたきれいな服を着ている...

フロントエンドJavaScriptは関数のカリー化を完全に理解している

目次1. カレーとは何か2. カレーの用途3. カリー化ユーティリティ関数をカプセル化する方法 1....

ズームインとズームアウトの閉じるボタンを実現する CSS (サンプル コード)

この効果はブラウザ ページで最もよく見られます。まずは効果の画像をご覧ください。 上の図に示すように...