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 入門チュートリアル: フレーム タグの使用

推薦する

フレックスレイアウトの互換性の問題の概要

1. W3C バージョンの flex 2009年版フラグ: display: box; または bo...

MySql はデータを正常に挿入しますが、[Err] 1055 エラーが報告されます。解決策

1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...

jsを使用して中国語からピンインへの変換の完全な手順を実行します

jsを使用して、中国語をピンインに変換するパッケージを作成しました。倉庫のアドレスはpinyin-p...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...

JavaScript のコールバック関数の理解と使用

目次概要コールバックまたは高階関数とは何ですか?コールバック関数はどのように機能しますか?コールバッ...

MySQLパスワードを変更するいくつかの方法

序文:データベースを日常的に使用すると、パスワードが単純すぎて変更する必要がある場合、パスワードの有...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

Hbase 入門

1. HBaseの概要1.1 HBaseとはHBase は、高い信頼性、高いパフォーマンス、列ストレ...

Windows 10 での MySQL 8.0.11 圧縮バージョンのインストール チュートリアル

この記事では、MySQL 8.0.11圧縮版のインストールチュートリアルを参考までに紹介します。具体...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

docker ベースで Prometheus+Grafana を構築する手順の詳細説明

1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された...

フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...

シンプルなメッセージボードケースを実現するJavaScript

参考までに、Javascriptを使用してメッセージボードの例(メッセージ削除あり)を実装します。具...