MySQLで時間を判定条件として使用する方法

MySQLで時間を判定条件として使用する方法

背景: 開発プロセスでは、現在の月、現在の日、現在の時間、今後数日など、時間を判断条件としてデータをクエリする必要があることがよくあります。

1. 現在の月

これを実現するには、MySQL MONTH(date) 関数を使用するだけです。 (年をメモしてください)

MONTH(日付);
-- 使用法: MONTH 関数は、指定された日付値の月を表す整数を返します。

- 例
月を選択('2020-11-11 00:00:00')
-- 戻り値は11です

2. 30日以内

当月の後に「30日以内」と付けたのは、この2つの要件が相互に変換される状況に遭遇することが多いためです。「30日以内」は「1ヶ月以内」とも呼ばれます。

この場合、DATEDIFF(expr1,expr2) 関数を使用する必要があります。

DATEDIFF(式1,式2)
-- 使用法: パラメーターは 2 つの日付であり、expr1 と expr2 の間の日数の差が返されます。

- 例
DATEDIFF('2020-11-01 08:00:00','2020-11-11 00:00:00') を選択します
-- 戻り値は-10です

3. 当日

現在の日付には TO_DAYS(date) 関数を使用する必要があります。

TO_DAYS(日付)
-- 使用法: 0000 (西暦 1 年) から現在の日付までの合計日数を返します。

- 例
TO_DAYS('0000-01-01')を選択します
-- 戻り値は1です
TO_DAYS('0001-01-01')を選択します
-- 戻り値は366です

4. 現在の時間

この場合、HOUR(date) 関数と CURDATE() 関数を一緒に使用する必要があります。

HOUR(日付)
-- 使用法: 現在の時刻を今日の時間として返します
- 例
時間を選択('2020-11-11 11:11:11')
-- 戻り値は11です

CURDATE()
-- 使用法: 時間、分、秒を除いた今日の日付を yyyy-MM-dd で返します。

-- 使用例
created_at > CURDATE() かつ HOUR(created_at) = HOUR(now()) となるテーブルから * を選択します

5. x日以内

これは、DATE_SUB(date,INTERVAL expr unit) 関数を使用して実現できます。

DATE_SUB(日付,INTERVAL 式 単位)
-- 使用法: 開始日から期間を引いた値

次の表に示すように、その背後にある単位には多くの値があります。

タイプ(単位値)意味expr式の形式は
ええ
MM
DD
時間時間はあ
ポイントんん
2番2番ss
年_月年と月YYとMMは任意の記号で区切られます
曜日_時間日と時間DDとhhは任意の記号で区切られます
日_分日と分DDとmmは任意の記号で区切られます
DAY_SECOND日と秒DDとssは任意の記号で区切られます
時間_分時間と分hhとmmを区切るには任意の記号を使用します
時間_秒時間と秒hhとssを区切るには任意の記号を使用します
分_秒分と秒mmとssを区切るには任意の記号を使用します

- 例
-- 7日以内にデータクエリ
created_at > DATE_SUB(CURDATE(),INTERVAL 7 DAY) のテーブルから * を選択

6. 数日以内にデータ統計

7 日間で毎日のデータ量をカウントするという要件によく遭遇します。この場合、データのプッシュがない場合、つまり 0 であっても取得する必要がある場合を考慮する必要があります。

私の考えは次のとおりです。

選択
	 DATE_SUB( CURDATE(), INTERVAL ミリ秒 日 ) AS orderDate
から
	(
  0 を s として選択 UNION ALL
  1つを選択 すべてを選択
  2 を選択 すべて結合
  3 を選択 すべて結合
  選択 4 ユニオン すべて
  5 を選択 すべて
  選択6 
	)

上記のSQLクエリ結果を一時テーブルとして使用し、データテーブルと照合して、一定期間内のデータ数をカウントします。

-- 例: 12か月以内の各月のデータ数を照会する SELECT COUNT(t.created_at),res.date FROM 
	(選択
	 DATE_FORMAT(DATE_SUB( CURDATE(), INTERVAL ms MONTH ),'%Y-%m') AS 日付
から
	(
  0 を s として選択 UNION ALL
  1 を選択 すべてを選択
  2 を選択 すべて結合
  3 を選択 すべて結合
  選択 4 ユニオン すべて
  5 を選択 すべて
  6 を選択 すべて
  7 を選択 すべて
  8 ユニオン すべてを選択
  選択 9 ユニオン すべて
  10 を選択 すべて
  選択11 
	) m)res
	左結合 
	テーブル t on res.date = DATE_FORMAT(t.created_at,'%Y-%m')
	日付別にグループ化

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Mysql 文字列フィールドに特定の文字列が含まれているかどうかを判断する 2 つの方法
  • MySQLが正常にインストールされたかどうかを確認する方法
  • MySQLに挿入する前にデータが存在するかどうかを確認する方法

<<:  建国記念日が近づいています。JS を使用して、建国記念日風のアバターを生成する小さなツールを実装します。実装プロセスの詳細な説明

>>:  docker によってプルされたイメージがどこに保存されるかの詳細な説明

推薦する

Bツリーの特性の紹介

B ツリーは一般的なデータ構造です。彼と一緒にB+ツリーがあります。ここで、概念を明確にする必要があ...

CentOS 6 は Docker を使用して Redis マスター スレーブ データベース操作例を展開します

この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...

MySQL 派生テーブル(Derived Table)の簡単な使用例分析

この記事では、例を使用して、MySQL 派生テーブルの簡単な使用方法を説明します。ご参考までに、詳細...

Windows 10 での Tomcat のインストールと展開に関する詳細なチュートリアル

目次1 Java環境の設定2 tomcatのインストールと展開Tomcat をインストールして展開す...

JavaScript のショートカットのヒント

目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...

Docker+nextcloudで個人用クラウドストレージシステムを構築

1. Dockerのインストールと起動 yum で epel-release をインストールします ...

Vue実装のカウンターケース

この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...

jar パッケージを Docker コンテナに変換する方法

jar パッケージを Docker コンテナに変換する方法1.まずJavaイメージをダウンロードする...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

JavaScript/TypeScript で同時リクエスト制御を実装するためのサンプルコード

シナリオリクエストが 10 件あるが、同時リクエストの最大数は 5 件で、リクエスト結果が必要である...

Vue は書籍管理ケースを実装します

この記事では、書籍管理を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次の...

1 つの記事で JSON (JavaScript Object Notation) を理解する

目次JSONが登場JSON構造JSONオブジェクトJson オブジェクトと JavaScript オ...

HTML ページはダーク モードの実装をサポートします

2019年から、AndroidとiOSの両方のプラットフォームでダークモードが使用され始めました。も...

デザインストーリー: ナンバープレートを覚えられない警備員

<br />私が住んでいる地域では、コミュニティに出入りする車両を管理するために、コミュ...