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

推薦する

VMware Workstation Pro が Win10 アップデートにより開けなくなる問題の解決方法

今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...

ReactでCSSをエレガントに書く方法

目次1. インラインスタイル2. インポート方法を使用する3.cssモジュールのエクスポート4. ス...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...

Centos8 に nginx1.9.1 をインストールする詳細な手順

1.17.9 本当はもっと美味しいNginx のダウンロード アドレス: https://nginx...

Xmeter APIインターフェーステストツールの使用状況の分析

XMeter API は、以下のサービスを含む、JMeter に基づくワンストップのオンライン イン...

Vue.$set の失敗の落とし穴の発見と解決

偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...

Nginx ログ管理の概要

Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...

全体的なユーザーエクスペリエンスを確保する方法

関連記事:ユーザーエクスペリエンスのためのウェブサイトデザイン今朝、GMail がまた不調になり、接...

JavaScript の構成と継承の説明

目次1. はじめに2. プロトタイプチェーン継承3. コンストラクタの継承4. 組み合わせ継承1. ...

CocosCreator Typescriptでテトリスゲームを作る

目次1. はじめに2. 解決すべきいくつかの重要な問題3.最後に書く1. はじめに最近、Cocos ...

ウェブデザイナーが持つべき7つのスキル

Web デザインは科学であると同時に芸術でもあります。 Web デザイン作業は、半分は適切なプログラ...

要素テーブルヘッダー行の高さの問題の解決

目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...

UnityはMySQLに接続し、テーブルデータの実装コードを読み取ります

表は以下のとおりです。 Unity が読み取って呼び出すときのコード: データベース内の別のテーブル...

VUE無限レベルツリーデータ構造表示の実装

目次コンポーネントの再帰呼び出しレンダリングメソッドの使用プロジェクトに取り組んでいると、左側のメニ...