Mysqlの日付と時刻関数を扱う記事

Mysqlの日付と時刻関数を扱う記事

序文

日付と時刻の機能も、日常業務で頻繁に使用されます。この記事では、主に MySQL の日付と時刻に関連する関数について説明します。これらは基本的に異なるデータベース間で同じであり、個々の関数のみが異なります。誰もがデータベースを持っているので、分からないことがあれば調べるだけで済みます。

1. 現在の時刻を取得する

1.1 現在の日付と時刻を返す

1.2 現在の日付を取得する

1.3 現在の時刻を取得する

1.4 現在の週番号を取得する

2. 日付と時刻の形式の変換

3. 日付と時刻の操作

3.1 後進シフト時間

3.2 前進シフト時間

3.3 2つの日付の差

記事はかなり長いので保存してゆっくり読むことをおすすめします。

1. 現在の時刻を取得する

現在の時刻を取得するということは、プログラムが実行されている時点の年、月、日、時、分、秒などの時間関連のデータを取得することを意味します。

1.1 現在の日付と時刻を返す

現在の日付と時刻を返すには、ESql で now() 関数を使用します。select の後に now() 関数を記述するだけです。具体的なコードは次のとおりです。

今すぐ選択()

上記のコードを実行すると、プログラムが実行されている時点の年、月、日、時、分、秒の情報が取得されます。例: 2019-12-25 22:47:37。

1.2 現在の日付を取得する

前述の now() 関数は、現在の日付と時刻を取得します。現在の日付部分のみが必要で、時刻部分は必要ない場合もあります。この場合は、Sql で now() 関数を curdate() 関数に置き換えて、現在の日付部分を取得します。具体的なコードは次のとおりです。

curdate() を選択

上記のコードを実行すると、現在の日付部分を取得します: 2019-12-25

curdate() 関数は、現在の瞬間の日付部分を直接取得します。また、最初に now() 関数を使用して現在の日付と時刻を取得し、次に date() 関数を使用して日付と時刻を日付部分に変換することもできます。具体的なコードは次のとおりです。

日付を選択(now())

上記のコードを実行すると、curdate() 関数と同じ結果が得られます。

year() 関数を使用して日付の年だけを取得することもできます。具体的なコードは次のとおりです。

年を選択(now())

上記のコードを実行すると、最終結果は 2019 になります。

month() 関数を使用して、日付の月のみを取得することもできます。具体的なコードは次のとおりです。

月を選択(now())

上記のコードを実行すると、最終結果は 12 になります。

day() 関数を使用して日付の日のみを取得することもできます。具体的なコードは次のとおりです。

日を選択(now())

上記のコードを実行すると、最終結果は 25 になります。

1.3 現在の時刻を取得する

現在の日付のみを取得する必要があるだけでなく、現在の時刻のみを取得する必要もあります。現在の時刻のみを取得したい場合は、現在の日付のみを取得する curdate() 関数を curtime() 関数に置き換えるだけです。具体的なコードは次のとおりです。

curtime() を選択

上記のコードを実行すると、現在の時刻部分(22:47:37)を取得できます。

また、最初に now() 関数を使用して現在の日付と時刻を取得し、次に time() 関数を使用して日付と時刻を時刻部分に変換することもできます。具体的なコードは次のとおりです。

時間を選択(now())

上記のコードを実行すると、curdate() 関数と同じ結果が得られます。

hour() 関数を使用して、時刻内の時間のみを取得することもできます。具体的なコードは次のとおりです。

時間を選択(now())

上記のコードを実行すると、最終結果は 22 になります。

minute() 関数を使用して、時間の分だけを取得することもできます。具体的なコードは次のとおりです。

分を選択(now())

上記のコードを実行すると、最終結果は 47 になります。

second() 関数を使用して、時間の秒数のみを取得することもできます。具体的なコードは次のとおりです。

2番目を選択(now())

上記のコードを実行すると、最終結果は 37 になります。

1.4 現在の週番号を取得する

上記では、現在の日付と時刻、日付と時刻を取得する方法について説明しました。このセクションでは、現在の週番号を取得する方法について説明します。通常、1 年は 52 週間 (365 日 / 7) に分けられますが、53 週間になることもあります。1 年の現在の週を確認するには、weekofyear() 関数を使用します。具体的なコードは次のとおりです。

週番号を選択(now())

上記のコードを実行すると、最終結果は 52 になります。

年の現在の週番号を取得することに加えて、現在の日付が何曜日であるかも取得する必要があります。 Sql で使用される dayofweek() 関数の具体的なコードは次のとおりです。

曜日を選択(now())

上記のコードを実行すると、最終結果は 5 になります。2019 年 12 月 25 日は木曜日のはずです。なぜ結果が 5 になるのでしょうか。これは、この関数の週が日曜日から始まるためです。つまり、日曜日は 1、月曜日は 2 に対応し、木曜日は 5 に対応します。

2. 日付と時刻の形式の変換

同じ日付と時刻をさまざまな方法で表現できることはご存知でしょうが、場合によっては異なる形式間で変換する必要があります。 Sql では、date_format() 関数を使用します。date_format 関数の形式は次のとおりです。

date_format(日付時刻,形式)

datetime は変換する特定の日付と時刻を示し、format は変換する形式を示します。オプションの形式は次のとおりです。

テーマ

形式

説明する

%Y

4桁の年

%b

月の略称

%M

月の英語名

%m

月 01-12

%c

月の値は1から12まで

%d

01から31までの月の日

%e

1日から31日までの月日

%D

月の日付を示すには接尾辞thを使用します

%j

001 から 366 までの年間通算日

%a

英語の曜日の略語

%W

曜日の英語のフルネーム

時間

%H

00-23時間

時間

%h

01-12時間

ポイント

%私

00から59までの分

2番

%S

秒 (00-59)

2番

%f

マイクロ秒

時間、分、秒

%T

現在の時間、分、秒を 24 時間制 (hh:mm:ss) で返します。

date_format("2019-12-25 22:47:37","%Y-%m-%d") を選択してください

上記のコードを実行すると、4 桁の年、01 から 12 までの月、01 から 31 までの日が - で区切られて返されます (つまり、2019-12-25)。

ここで、1 と 01 の違いに注意する必要があります。基本的に、どちらも 1 を表しますが、表示は少し異なります。たとえば、次のコードでは、元の日付は 2019-1-1 ですが、返される結果は 2019-01-01 です。

date_format("2019-1-1 22:47:37","%Y-%m-%d") を選択
date_format("2019-12-25 22:47:37","%H:%i:%S") を選択

上記のコードを実行すると、00 ~ 23 の時間、00 ~ 59 の分、00 ~ 59 の秒が : で区切られて返されます (つまり、22:47:37)。

date_format() 関数に加えて、年、月、日、時間、分など、特定の日付と時刻の単一の部分を返すために使用される extract 関数もあります。具体的な形式は以下のとおりです。

抽出(日時から単位)

datetime は特定の日付と時刻を表し、unit は datetime から返される個々の部分を表します。単位の値は次のとおりです。

ユニット

例示する

時間

時間

2番

2番

週番号、年番号

選択
 抽出(年を「2019-12-25 22:47:37」から抽出)をcol1として
 、抽出(「2019-12-25 22:47:37」から月を抽出)をcol2として
 、extract("2019-12-25 22:47:37") を col3 として抽出します

上記のコードを実行すると、datetime の年、月、日がそれぞれ取得されます。具体的な結果は次のとおりです。

列1

列2

列3

2019

12

25

3. 日付と時刻の操作

場合によっては、日付間の計算も実行する必要があります。たとえば、今日の 7 日前の日付や今日の 13 日後の日付を取得したい場合、カレンダーやカウントを参照できますが、これらの方法は必ずしも最も直接的な方法ではありません。そのため、日付間の操作が必要になります。

3.1 後進シフト時間

たとえば、今日から x 日後の日付を取得したい場合、今日の日付に x 日を追加することと同じです。これを後方オフセットと呼びます。このとき、date_add() 関数を使用できます。具体的な形式は次のとおりです。

date_add(日付、間隔 数値 単位)

date は現在の日付、または現在の日時を表します。interval は固定パラメータです。num は前述の x です。unit は追加する単位を表します。7 日前、7 か月前、または 7 年前に戻るかどうかです。オプションの値は、extract 関数の unit のオプション値と同じです。

選択 
 「2019-01-01」をcol1として
 ,date_add("2019-01-01",間隔7年)をcol2として
 ,date_add("2019-01-01",間隔7か月)をcol3として
 ,date_add("2019-01-01",間隔7日)をcol4として

上記のコードを実行すると、2019-01-01 から 7 年 7 か月 7 日後の日付が返されます。具体的な結果は次のとおりです。

列1

列2

列3

列4

2019-01-01

2026-01-01

2019-08-01

2019-01-08

選択 
 「2019-01-01 01:01:01」をcol1として
 ,date_add("2019-01-01 01:01:01",間隔 7 時間) を col2 として
 ,date_add("2019-01-01 01:01:01",間隔7分)をcol3として
 ,date_add("2019-01-01 01:01:01",間隔7秒)をcol4として

上記のコードを実行すると、2019-01-01 01:01:01 から 7 時間 7 分 7 秒後の日付が返されます。具体的な結果は次のとおりです。

列1

列2

列3

列4

2019-01-01 01:01:01

2019-01-01 08:01:01

2019-01-01 01:08:01

2019-01-01 01:01:08

3.2 前進シフト時間

後方偏差がある場合には、前方偏差も発生します。たとえば、今日より何日前の日数を取得したい場合、現在の日付から x 日を引くことになります。このとき、date_sub() 関数を使用します。date_sub の関数形式は date_add と同じです。上記のコードで date_add を date_sub に置き換えると、前方にシフトすることを意味します。

選択 
 「2019-01-01」をcol1として
 ,date_sub("2019-01-01",間隔7年)をcol2として
 ,date_sub("2019-01-01",間隔7か月)をcol3として
 ,date_sub("2019-01-01",間隔7日)をcol4として

上記のコードを実行すると、2019-01-01 の 7 年前、7 か月、7 日前の日付が返されます。具体的な結果は次のとおりです。

列1

列2

列3

列4

2019-01-01

2012-01-01

2018-06-01

2018-12-25

指定された時刻を進めるには、date_sub を使用するだけでなく、引き続き date_add を使用しますが、追加する特定の num 値を負の数 (7 を -7 など) に置き換えるだけです。具体的な実装コードは次のとおりです。

選択 
 「2019-01-01」をcol1として
 ,date_add("2019-01-01",間隔 -7 年) を col2 として
 ,date_add("2019-01-01",間隔 -7 か月) を col3 として
 ,date_add("2019-01-01",間隔 -7 日) を col4 として

上記を実行して得られた結果は、date_sub を使用して得られた結果と一致します。

3.3 2つの日付の差

上記では、前方オフセットと後方オフセットについて説明しました。2 つの日付の差を取得する必要が生じることもあります。その場合は datediff() 関数を使用します。datediff は、2 つの日付間の日数を返すために使用されます。関数の形式は次のとおりです。

datediff(終了日、開始日)

end_date を使用して start_date を減算します。

datediff("2019-01-07","2019-01-01") を選択

上記のコードを実行すると、2019-01-07 と 2019-01-01 の間の日数の差である 6 が返されます。

以下も視聴できます:

Sql の実行順序は何ですか?

これで、MySQL の日付と時刻関数に関するこの記事は終了です。MySQL の日付と時刻関数の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の日付と時刻関数の概要 (MySQL 5.X)
  • MySQLの日付と時刻関数の使用の概要
  • PHP Mysql 日付と時刻関数コレクション
  • mYsqlの日付と時刻の関数はヘルプを必要としません
  • MySQL の日付と時刻関数の知識の要約

<<:  js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

>>:  Docker イメージのプルとタグ操作 pull | tag

推薦する

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

チェックボックスの選択またはキャンセルを実装するJavaScript

この記事では、すべてのチェックボックスを選択または解除するためのJavaScriptの具体的なコード...

ウェブページの要素の検査とソースコードの表示の違いについて

Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...

Vue3における非親子コンポーネント通信の詳細な説明

目次最初の方法アプリ.vueホーム.vueホームコンテンツ.vueデータの応答性レスポンシブプロパテ...

Linux C ログ出力コード テンプレート サンプル コード

序文この記事は主に Linux C でのログ出力コード テンプレートに関する関連コンテンツを紹介し、...

docker で nginx+php+mysql を設定する方法

まず、方法を理解します。 docker exec を使用して Docker コンテナに入るDocke...

CSS3 で Taobao に空白スペースを実装する方法

Taobao用の空白スペースを作成します。 ブラウザページを縮小すると、コンテンツ領域は縮小されませ...

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

Zabbixは複数のmysqlプロセスの監視を実装します

1 つのサーバー上で 3 つの MySQL インスタンス プロセスが開始され、それぞれ異なるポート ...

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

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

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません

今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

CSSはマウスが画像に移動したときにマスク効果を実現します

1.マスクレイヤーのHTMLコードと画像をdivに配置する.img_div に入れました。 <...