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

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

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

1.1 現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now()

mysql> now() を選択します。

+---------------------+
| 今() |
+---------------------+
| 2008-08-08 22:20:46 |
+---------------------+

現在の日付と時刻を取得できる now() 関数に加えて、MySQL には次の関数もあります。

現在のタイムスタンプ()
、現在のタイムスタンプ
、ローカルタイム()
、現地時間
、ローカルタイムスタンプ -- (v4.0.6)
,localtimestamp() -- (v4.0.6)

これらの日付と時刻の関数は now() と同等です。 now() 関数は短くて覚えやすいため、上記の関数の代わりに常に now() を使用することをお勧めします。

1.2 現在の日付 + 時刻 (日付 + 時刻) を取得する関数: sysdate()

sysdate() 日付と時刻関数は now() と似ていますが、now() は実行の開始時に値を取得するのに対し、sysdate() は関数の実行時に動的に値を取得する点が異なります。理解するには次の例を見てください。

mysql> now()、sleep(3)、now() を選択します。

+---------------------+----------+---------------------+
| 今() | スリープ(3) | 今() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
+---------------------+----------+---------------------+

mysql> sysdate()、sleep(3)、sysdate() を選択します。

+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
+---------------------+----------+---------------------+

スリープ期間は 3 秒ですが、now() 関数で取得された時間値は同じですが、sysdate() 関数で取得された時間値は 3 秒異なることがわかります。 MySQL マニュアルでは、sysdate() について次のように説明されています: 関数が実行された時刻を返します。

sysdate() 日付と時刻の関数。一般的にはあまり使用されません。

2. 現在の日付(date)を取得する関数: curdate()

mysql> curdate() を選択します。

+------------+
| 更新() |
+------------+
| 2008-08-08 |
+------------+

そのうち、次の 2 つの日付関数は curdate() と同等です。

現在の日付()
,現在の日付

3. 現在の時刻(time)を取得する関数: curtime()

mysql> curtime() を選択します。

+-----------+
| カーソル時間() |
+-----------+
| 22:41:30 |
+-----------+

そのうち、次の 2 つの時間関数は curtime() と同等です。

現在の時刻()
,現在の時刻

4. 現在の UTC の日付と時刻を取得する関数: utc_date()、utc_time()、utc_timestamp()

mysql> utc_timestamp()、utc_date()、utc_time()、now() を選択します

+---------------------+------------+------------+---------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
+---------------------+------------+------------+---------------------+
| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
+---------------------+------------+------------+---------------------+

私たちの国は東部 8 タイム ゾーンに位置しているため、現地時間 = UTC 時間 + 8 時間となります。 UTC 時間は、ビジネスに複数の国や地域が関係する場合に非常に便利です。

2. MySQL の日付と時刻の抽出関数。

1. 日付と時刻のさまざまな部分を選択します: 日付、時刻、年、四半期、月、日、時間、分、秒、マイクロ秒

@dt = '2008-09-10 07:15:30.123456' を設定します。

日付を選択(@dt); -- 2008-09-10
時間を選択(@dt); -- 07:15:30.123456
年を選択(@dt); -- 2008
四半期を選択(@dt); -- 3
月を選択(@dt); -- 9
週を選択(@dt); -- 36
日を選択(@dt); -- 10
時間を選択(@dt); -- 7
分を選択(@dt); -- 15
2番目を選択(@dt); -- 30
マイクロ秒(@dt); を選択 -- 123456

2. 上記と同様の機能を実現できる MySQL Extract() 関数:

@dt = '2008-09-10 07:15:30.123456' を設定します。

@dt から年を抽出して選択します -- 2008
select extract(quarter from @dt); -- 3
@dt から月を抽出して選択します -- 9
@dt から week を抽出して選択します -- 36
@dt から日を抽出して選択します -- 10
select extract(hour from @dt); -- 7
select extract(minute from @dt); -- 15
select extract(second from @dt); -- 30
select extract(microsecond from @dt); -- 123456

@dt から year_month を抽出して選択します -- 200809
@dt から day_hour を抽出して選択します -- 1007
@dt から day_minute を抽出して選択します -- 100715
@dt から day_second を抽出して選択します -- 10071530
@dt から day_microsecond を抽出して選択します -- 10071530123456
@dt から hour_minute を抽出して選択します -- 715
@dt から hour_second を抽出して選択します -- 71530
@dt から hour_microsecond を抽出して選択します -- 71530123456
@dt から minute_second を抽出して選択します -- 1530
@dt から minute_microsecond を抽出して選択します -- 1530123456
@dt から second_microsecond を抽出して選択します -- 30123456

MySQL Extract() 関数には、date() と time() を除くすべての関数があります。また、「day_microsecond」などを選択する機能もあります。ここでは、日とマイクロ秒だけを選択しているのではなく、日付の日の部分からマイクロ秒の部分までを選択していることに注意してください。それは十分強力です!

MySQL Extract() 関数の唯一の欠点は、キー入力がさらに数回必要になることです。

3. MySQL dayof... 関数: dayofweek()、dayofmonth()、dayofyear()

それぞれ週、月、年における日付パラメータの位置を返します。

@dt = '2008-08-08' を設定します。

曜日を選択(@dt); -- 6
dayofmonth(@dt); を選択します -- 8
dayofyear(@dt); を選択します -- 221

日付「2008-08-08」は、週の 6 日目 (1 = 日曜日、2 = 月曜日、...、7 = 土曜日)、月の 8 日目、年の 221 日目です。

4. MySQL の週...関数: week()、weekofyear()、dayofweek()、weekday()、yearweek()

@dt = '2008-08-08' を設定します。

週を選択(@dt); -- 31
週を選択(@dt,3); -- 32
weekofyear(@dt); を選択 -- 32

曜日を選択(@dt); -- 6
曜日を選択(@dt); -- 4

yearweek(@dt); を選択 -- 200831

MySQL week() 関数には 2 つのパラメータを指定できます。詳細についてはマニュアルを参照してください。 weekofyear() は week() と同じで、どちらも特定の日が含まれる年の週番号を計算します。 weekofyear(@dt) は week(@dt,3) と同等です。

MySQL の weekday() 関数は dayofweek() に似ており、どちらも週内の特定の曜日の位置を返します。違いは参照標準にあります。曜日: (0 = 月曜日、1 = 火曜日、...、6 = 日曜日); 曜日: (1 = 日曜日、2 = 月曜日、...、7 = 土曜日)
MySQL yearweek() 関数は、年 (2008) + 週位置 (31) を返します。

5. 曜日と月の名前を返す MySQL 関数: dayname()、monthname()

@dt = '2008-08-08' を設定します。

曜日名を選択(@dt); -- 金曜日
monthname(@dt); を選択します -- 8 月

考えてみてください、中国名をどうやって戻すのでしょうか?

6. MySQL last_day() 関数: 月の最終日を返します。

last_day('2008-02-01') を選択します -- 2008-02-29
last_day('2008-08-08') を選択します -- 2008-08-31

MySQL の last_day() 関数は非常に便利です。たとえば、現在の月に何日あるかを知りたい場合は、次のように計算できます。

mysql> now()、day(last_day(now())) を days として選択します。

+---------------------+------+
| 今() | 日数 |
+---------------------+------+
| 2008-08-09 11:45:45 | 31 |
+---------------------+------+

3. MySQLの日付と時刻の計算関数

1. MySQLは日付に時間間隔を追加します: date_add()

@dt = now() を設定します。

select date_add(@dt, interval 1 day); -- 1日追加します
select date_add(@dt, interval 1 hour); -- 1時間追加します
date_add(@dt, 間隔 1 分) を選択します -- ...
date_add(@dt、間隔1秒)を選択します。
date_add(@dt、間隔1マイクロ秒)を選択します。
date_add(@dt、間隔1週間)を選択します。
date_add(@dt、間隔1か月)を選択します。
date_add(@dt、間隔1四半期)を選択します。
date_add(@dt、間隔1年)を選択します。

select date_add(@dt, interval -1 day); -- 1日を減算

MySQL の adddate()、addtime() 関数は date_add() に置き換えることができます。以下は、addtime() 関数を実装する date_add() の例です。

mysql> @dt = '2008-08-09 12:12:33' を設定します。

マイSQL>
mysql> date_add(@dt、間隔 '01:15:30' 時間_秒) を選択します。

+------------------------------------------------+
| date_add(@dt, 間隔 '01:15:30' 時間_秒) |
+------------------------------------------------+
| 2008-08-09 13:28:03 |
+------------------------------------------------+

mysql> date_add(@dt、間隔 '1 01:15:30' day_second) を選択します。

+-------------------------------------------------+
| date_add(@dt、間隔 '1 01:15:30' day_second) |
+-------------------------------------------------+
| 2008-08-10 13:28:03 |
+-------------------------------------------------+

date_add() 関数は、それぞれ「1 時間 15 分 30 秒」と「1 日 1 時間 15 分 30 秒」を @dt に追加します。推奨事項: adddate()、addtime() の代わりに、常に date_add() datetime 関数を使用してください。

2. MySQLは日付から時間間隔を減算します: date_sub()

mysql> date_sub('1998-01-01 00:00:00', 間隔 '1 1:1:1' day_second) を選択します。

+----------------------------------------------------------------+
| date_sub('1998-01-01 00:00:00', 間隔 '1 1:1:1' day_second) |
+----------------------------------------------------------------+
| 1997-12-30 22:58:59 |
+----------------------------------------------------------------+

MySQL の date_sub() 日付と時刻関数は date_add() と同じ使い方をするため、ここでは詳細には説明しません。さらに、MySQL には subdate() と subtime() という 2 つの関数があります。代わりに date_sub() を使用することをお勧めします。

3. MySQL の代替日付関数: period_add(P,N)、period_diff(P1,P2)

関数パラメータ「P」の形式は「YYYYMM」または「YYMM」であり、2 番目のパラメータ「N」は N か月を加算または減算することを意味します。

MySQL period_add(P,N): 日付に N か月を加算/減算します。

mysql> period_add(200808,2)、period_add(20080808,-2) を選択します

+----------------------+-------------------------+
| 期間追加(200808,2) | 期間追加(20080808,-2) |
+----------------------+-------------------------+
| 200810 | 20080806 |
+----------------------+-------------------------+

MySQL period_diff(P1,P2): 日付 P1-P2、N か月を返します。

mysql> period_diff(200808, 200801) を選択します。

+-----------------------------+
| 期間差(200808, 200801) |
+-----------------------------+
| 7 |
+-----------------------------+

MySQL では、これら 2 つの日付関数はほとんど使用されません。

4. MySQL の日付と時刻の減算関数: datediff(date1,date2)、timediff(time1,time2)

MySQL datediff(date1,date2): 2 つの日付から date1 - date2 を減算し、日数を返します。

datediff('2008-08-08', '2008-08-01'); を選択します -- 7
datediff('2008-08-01', '2008-08-08'); を選択します -- -7

MySQL timediff(time1, time2): 2 つの日付から time1 - time2 を減算し、時間差を返します。

timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); を選択します -- 08:08:08
timediff('08:08:08', '00:00:00'); を選択します -- 08:08:08

注意: timediff(time1, time2) 関数の 2 つのパラメータは同じ型である必要があります。

IV. MySQL 日付変換関数、時刻変換関数

1. MySQL (時間、秒) 変換関数: time_to_sec(時間)、sec_to_time(秒)

time_to_sec('01:00:05'); を選択します -- 3605
sec_to_time(3605); を選択します -- '01:00:05'

2. MySQL (日付、日) 変換関数: to_days(date), from_days(days)

to_days('0000-00-00'); を選択します -- 0
to_days('2008-08-08'); を選択します -- 733627

from_days(0); -- '0000-00-00' を選択します
from_days(733627); を選択します --'2008-08-08'

3. MySQL Str to Date(文字列から日付)関数: str_to_date(str, format)

str_to_date('08/09/2008', '%m/%d/%Y') を選択します -- 2008-08-09
str_to_date('08/09/08' , '%m/%d/%y') を選択します -- 2008-08-09
str_to_date('08.09.2008', '%m.%d.%Y') を選択します -- 2008-08-09
str_to_date('08:09:30', '%h:%i:%s') を選択します -- 08:09:30
str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s') を選択します -- 2008-08-09 08:09:30

ご覧のとおり、str_to_date(str,format) 変換関数は、乱雑な文字列を日付形式に変換できます。あるいは、時間に変換することもできます。 「フォーマット」については、MySQL のマニュアルを参照してください。

4. MySQL の日付/時刻を Str (日付/時刻を文字列に変換) 関数: date_format(date,format)、time_format(time,format)

mysql> date_format('2008-08-08 22:23:00', '%W %M %Y') を選択します。

+------------------------------------------------+
| date_format('2008-08-08 22:23:00', '%W %M %Y') |
+------------------------------------------------+
| 2008 年 8 月金曜日 |
+------------------------------------------------+

mysql> date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') を選択します。

+----------------------------------------------------+
| date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |
+----------------------------------------------------+
| 20080808222301 |
+----------------------------------------------------+

mysql> time_format('22:23:01', '%H.%i.%s') を選択します。

+-------------------------------------+
| 時間フォーマット('22:23:01', '%H.%i.%s') |
+-------------------------------------+
| 22.23.01 |
+-------------------------------------+

MySQL の日付と時刻の変換関数: date_format(date,format)、time_format(time,format) は、日付/時刻をさまざまな文字列形式に変換できます。これは、str_to_date(str,format) 関数の逆変換です。

5. MySQLは国と地域の時間フォーマット関数を取得します: get_format()

MySQL get_format() 構文:

get_format(日付|時刻|datetime、'eur'|'usa'|'jis'|'iso'|'内部'

MySQL get_format() の使用例の完全な例:

get_format(date,'usa') を選択します。 -- '%m.%d.%Y'
get_format(date,'jis') を選択します。 -- '%Y-%m-%d'
get_format(date,'iso') を選択します。 -- '%Y-%m-%d'
get_format(date,'eur') を選択します。 -- '%d.%m.%Y'
get_format(date,'internal') を選択します。 -- '%Y%m%d'
get_format(datetime,'usa') を選択します。 -- '%Y-%m-%d %H.%i.%s'
get_format(datetime,'jis') を選択します。 -- '%Y-%m-%d %H:%i:%s'
get_format(datetime,'iso') を選択します。 -- '%Y-%m-%d %H:%i:%s'
get_format(datetime,'eur') を選択します。 -- '%Y-%m-%d %H.%i.%s'
get_format(datetime,'internal') を選択します。 -- '%Y%m%d%H%i%s'
get_format(time,'usa') を選択します。 -- '%h:%i:%s %p'
get_format(time,'jis') を選択; -- '%H:%i:%s'
get_format(time,'iso') を選択します。 -- '%H:%i:%s'
get_format(time,'eur') を選択します。 -- '%H.%i.%s'
get_format(time,'internal') を選択; -- '%H%i%s'

MySQL get_format() 関数は実際にはほとんど使用されません。

6. MySQL makedate(年、年曜日)、maketime(時、分、秒)

makedate(2001,31); を選択します -- '2001-01-31'
makedate(2001,32); を選択します --'2001-02-01'

maketime(12,15,30); を選択します -- '12:15:30'

5. MySQL タイムスタンプ関数

1. MySQLは現在のタイムスタンプ関数を取得します: current_timestamp、current_timestamp()

mysql> current_timestamp、current_timestamp() を選択します。

+---------------------+---------------------+
| 現在のタイムスタンプ | 現在のタイムスタンプ() |
+---------------------+---------------------+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+---------------------+---------------------+

2. MySQL (Unix タイムスタンプ、日付) 変換関数:

unix_timestamp()、
unix_timestamp(日付)、
from_unixtime(unix_timestamp)、
from_unixtime(unix_timestamp,フォーマット)

次に例を示します。

unix_timestamp() を選択; -- 1218290027
unix_timestamp('2008-08-08'); を選択します -- 1218124800
unix_timestamp('2008-08-08 12:30:00'); を選択します -- 1218169800

from_unixtime(1218290027); を選択します --'2008-08-09 21:53:47'
from_unixtime(1218124800); を選択します --'2008-08-08 00:00:00'
from_unixtime(1218169800); を選択します --'2008-08-08 12:30:00'

from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x') を選択します -- '2008 8月8日 12:30:00 2008'

3. MySQL タイムスタンプの変換、増加、減少関数:

timestamp(date) -- 日付をタイムスタンプにする
timestamp(dt,time) -- dt + 時間
timestampadd(単位、間隔、日時式) --
timestampdiff(単位,datetime_expr1,datetime_expr2) --

例のセクションを参照してください:

タイムスタンプを選択します('2008-08-08'); -- 2008-08-08 00:00:00
タイムスタンプを選択('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01
タイムスタンプを選択('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01

timestampadd(day, 1, '2008-08-08 08:00:00') を選択します -- 2008-08-09 08:00:00
date_add('2008-08-08 08:00:00'、間隔 1 日) を選択します -- 2008-08-09 08:00:00

MySQL timestampadd() 関数は date_add() に似ています。

timestampdiff(year,'2002-05-01','2001-01-01'); を選択します -- -1
timestampdiff(day,'2002-05-01','2001-01-01') を選択します -- -485
timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); を選択します -- -12

datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); を選択します -- 7

MySQL timestampdiff() 関数は、2 つの日付間の日数しか計算できない datediff() よりもはるかに強力です。

6. MySQLタイムゾーン変換関数

convert_tz(dt,from_tz,to_tz)

convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); を選択します -- 2008-08-08 04:00:00

タイムゾーンの変換は、date_add、date_sub、timestampadd を通じても実行できます。

date_add('2008-08-08 12:00:00'、間隔 -8 時間) を選択します -- 2008-08-08 04:00:00
date_sub('2008-08-08 12:00:00', 間隔 8 時間) を選択します -- 2008-08-08 04:00:00
timestampadd(hour, -8, '2008-08-08 12:00:00') を選択します -- 2008-08-08 04:00:00

要約する

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

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

<<:  Dockerでの接続例外中のエラーを解決する

>>:  XHTML 入門チュートリアル: フレーム タグの使用

推薦する

MySQL ストアド プロシージャ (in、out、inout) の詳細な説明

1. はじめにバージョン 5.0 以降でサポートされています。特定の機能を実行するための SQL ス...

JavaScript の知識: コンストラクタも関数である

目次1. コンストラクタの定義と呼び出し2. 新しいキーワードの目的3. コンストラクタの問題: メ...

CSSカスタムプロパティの予備的な理解

現在、CSS プリプロセッサは Web 開発の標準となっています。 プリプロセッサの主な利点の 1 ...

解析を実装するためにPostgreSQLデータベースを書き込むSQLスクリプト関数

この記事は主に、PostgreSQL データベースを記述して解析を実装する SQL スクリプト関数を...

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

TypeScript の条件型に関する詳細な読書と実践記録

目次ジェネリック型での条件型の使用ツールタイプ脱出ポッド矢印関数で条件型を使用する型推論による条件型...

一般的な Linux の問題に対する解決策の概要

1. VMwareでCentos7を接続し、固定IPを設定する1) まず、仮想イメージ名を右クリック...

Ubuntu の Docker で mysql5.6 をインストールする方法

1. mysql5.6をインストールする docker 実行 mysql:5.6すべてのアイテムのダ...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

MySQL はどのようにしてマスターとスレーブの同期を実現するのでしょうか?

マスタースレーブ同期 (マスタースレーブレプリケーションとも呼ばれる) は、マスタースレーブデータの...

IDEA が docker を統合して springboot プロジェクトを展開するプロセス全体

目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...

ECMAScript6 におけるマップマッピングの基本概念と一般的な方法

目次マッピングとは何かオブジェクトとマップの違いマップの共通メソッド宣言と初期化割り当てセットキー値...

LeetCode の SQL 実装 (184. 部門内で最も高い給与)

[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...

VMware に Linux システム (Redhat8) と仮想マシンのネットワーク構成をインストールする方法

目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...

ftp は SSH 経由で Linux にリモート接続します

まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...