MySQL の日付関数と日付変換およびフォーマット関数

MySQL の日付関数と日付変換およびフォーマット関数

MySQL は、膨大なユーザーベースを持つ無料のリレーショナル データベースです。この記事では、MySQL でよく使用される日付関数と日付変換およびフォーマット関数について説明します。

1. 曜日(日付)

曜日を選択('2016-01-16') 
曜日を選択('2016-01-16 00:00:00')
-> 7 (日付の曜日を返します。覚えておいてください: 日曜日 = 1、月曜日 = 2、... 土曜日 = 7)

2. 曜日(日付)

曜日を選択('2016-01-16') 
曜日を選択('2016-01-16 00:00:00')

-> 5 (返される日付が週のシリアル番号であることを示します。西暦では、週は通常日曜日から始まり、0 からカウントされます。したがって、0 = 月曜日、1 = 火曜日、... 5 = 土曜日と覚えておいてください)

3. DAYOFMONTH(日付)

DAYOFMONTH('2016-01-16') を選択 
曜日を選択('2016-01-16 00:00:00')
-> 16 (返される月の日を示します。1 日の場合は 1、...、31 日の場合は 31)

4. 年内の日(日付)

DAYOFYEAR('2016-03-31') を選択 
DAYOFYEAR('2016-03-31 00:00:00') を選択
-> 91 (返される年の日数を示します。01.01 は 1 を返し、...、12.31 は 365 を返します)

5. 月(日)

月を選択('2016-01-16') 
月を選択('2016-01-16 00:00:00')
-> 1 (返される日付の月を示します。1 月の場合は 1 を返し、12 月の場合は 12 を返します)

6. DAYNAME(日付)

曜日名を選択('2016-01-16') 
曜日名を選択('2016-01-16 00:00:00')
-> 土曜日 (返される日付が曜日の完全な英語名であることを示します)

7. 月名(日付)

月名を選択('2016-01-16') 
月名を選択('2016-01-16 00:00:00')
-> 1 月 (返される日付は、その年の月の英語名であることを示します)

8. 四半期(日付)

四半期を選択('2016-01-16') 
四半期を選択('2016-01-16 00:00:00')
-> 1 (日付が返される年の四半期を示し、1、2、3、4 を返します)

9. WEEK(日付, インデックス)

週を選択('2016-01-03') 
週を選択('2016-01-03', 0) 
週を選択('2016-01-03', 1)
-> 1 (この関数は、date の年内の週番号を返します。date(01.03) は日曜日です。デフォルトでは、日曜日が週の最初の日です。関数は、2 つの方法で 1 を返します。1. 最初の週には 0、2 番目の週には 1 を返します。... 2. 年の完全な週からカウントを開始し、最初の週には 1、2 番目の週には 2、...、最後の週には 53 を返します)
-> 1 (week() のデフォルトのインデックスは 0 です。したがって結果は上記と同じになります)
-> 0 (インデックスが 1 の場合、週の最初の日は月曜日なので、4 日の月曜日が 2 週目の開始日になります)

10. 年(日付)

年を選択('70-01-16') 
年を選択('2070-01-16') 
年を選択('69-01-16 00:00:00')
-> 1970 (返された日付の 4 桁の年を表します)
-> 2070 
-> 1969

年が 2 桁のみの場合、自動補完メカニズムはデフォルトの日付 1970.01.01 を境界として使用し、年が 70 以上の場合には 19 を補完し、年が 70 未満の場合には 20 を補完することに注意してください。

11. 時間

時間を選択('11:22:33') 
時間を選択('2016-01-16 11:22:33')
-> 11
-> 11

日付または時刻の時間の値を返します。値の範囲は (0-23) です。

12. 分(時間)

分を選択('11:22:33') 
分を選択('2016-01-16 11:44:33')
-> 22
-> 44

時間の分の値を返します。値の範囲は (0-59) です。

13. 2回目

2番目を選択('11:22:33') 
2番目を選択('2016-01-16 11:44:22')
-> 33
-> 22

時間の分の値を返します。値の範囲は (0-59) です。

14. PERIOD_ADD(月、追加)

PERIOD_ADD(1601,2)を選択します 
PERIOD_ADD(191602,3)を選択します 
PERIOD_ADD(191602,-3)を選択します
-> 201603
-> 191605
-> 191511

この関数は、月を加算または減算した結果を返します。月の形式は yyMM または yyyyMM です。返される結果は yyyyMM 形式です。Add は負の値を渡すことができます。

15. PERIOD_DIFF(月開始、月終了)

PERIOD_DIFF(1601,1603)を選択します 
PERIOD_DIFF(191602,191607)を選択します 
PERIOD_DIFF(1916-02,1916-07)を選択 
PERIOD_DIFF(1602,9002)を選択します
-> -2
-> -5
-> 5
-> 312

この関数は、monthStart と monthEnd の間の月数を返します。

16. DATE_ADD(日付、INTERVAL数値型)、ADDDATE()と同じ

DATE_ADD("2015-12-31 23:59:59",間隔1秒)を選択します 
DATE_ADD("2015-12-31 23:59:59",間隔1日)を選択します 
DATE_ADD(“2015-12-31 23:59:59”,INTERVAL “1:1” MINUTE_SECOND) を選択 
DATE_ADD(“2016-01-01 00:00:00”,INTERVAL “-1 10” DAY_HOUR) を選択
-> 2016-01-01 00:00:00
-> 2016-01-01 23:59:59
-> 2016-01-01 00:01:00
-> 2015-12-30 14:00:00

DATE_ADD()とADDDATE()は日付演算の結果を返します。

1. 日付の形式は、「15-12-31」、「15-12-31 23:59:59」、または「2015-12-31 23:59:59」です。パラメータの日付が日付形式の場合、日付形式の結果が返されます。パラメータの日付が日時形式の場合、日時形式の結果が返されます。

2. 入力形式:
2秒
MINUTE 分MINUTES
時間 時間 時間
日々
月 月
年 年
MINUTE_SECOND 分と秒 "MINUTES:SECONDS"
HOUR_MINUTE 時間と分 "HOURS:MINUTES"
DAY_HOUR 日と時間 "DAYS HOURS"
YEAR_MONTH 年と月 "YEARS-MONTHS"
HOUR_SECOND 時間、分、「HOURS:MINUTES:SECONDS」
DAY_MINUTE 日、時間、分 "DAYS HOURS:MINUTES"
DAY_SECOND 日、時間、分、秒 "DAYS HOURS:MINUTES:SECONDS"


3. また、関数を使用しない場合は、演算子「+」と「-」の使用も検討できます。例は次のとおりです。

「2016-01-01」を選択 - 間隔 1 秒 
「2016-01-01」を選択 - 間隔 1 日 
'2016-12-31 23:59:59' + 間隔 1 秒を選択 
'2016-12-31 23:59:59' + 間隔 "1:1" 分秒を選択

戻り値:

-> 2015-12-31 23:59:59
-> 2015-12-31
-> 2017-01-01 00:00:00
-> 2017-01-01 00:01:00

17. DATE_SUB(日付、INTERVAL数値型)、SUBDATE()と同じ

使い方はDATE_ADD()とADDDATE()に似ており、一方が加算、もう一方が減算となります。使用時は16時を参照してください。具体的な使い方はDATE_ADD()とADDDATE()を参照してください。

18. TO_DAYS(日付)

TO_DAYS('2016-01-16')を選択します 
TO_DAYS('20160116')を選択します 
TO_DAYS('160116')を選択します
-> 736344
-> 736344
-> 736344

西暦0年から日付までの合計日数を返します。

19. FROM_DAYS(日付)

FROM_DAYS(367) を選択
-> 0001-01-02

西暦0年から現在までの日数のDATE値を返します。

20. DATE_FORMAT(日付、形式): パラメータに従って日付をフォーマットします。

DATE_FORMAT('2016-01-16 22:23:00','%W %M %Y') を選択してください 
DATE_FORMAT('2016-01-16 22:23:00','%D %y %a %d %m %b %j') を選択 
DATE_FORMAT('2016-01-16 22:23:00','%H %k %I %r %T %S %w') を選択してください 
DATE_FORMAT('2016-01-16 22:23:00','%Y-%m-%d %H:%i:%s') を選択してください
-> 2016年1月土曜日
-> 16日 16 土 16 01 1月 01 016
-> 22 22 10 午後10時23分 22:23:00 00 6
-> 2016-01-16 22:23:00

フォーマットの形式は次のとおりです。

%M 月名 (1月...12月)
%W 曜日 (日曜日...土曜日)
%D 英語の接頭辞付きの月の日 (1 日、2 日、3 日など)
%Y 年、数字、4桁
%y 年、数字、2桁
%a 曜日の略称 (Sun...Sat)
%d 月の日付、数字 (00...31)
%e 月の日付、数値 (0...31)
%m 月、数字 (01...12)
%c 月、数字 (1...12)
%b 月名の省略形 (Jan...Dec)
%j 年の日数 (001...366)
%H 時間 (00...23)
%k 時間 (0...23)
%h 時間 (01...12)
%I 時間 (01...12)
%l 時間 (1...12)
%i 分、数字 (00...59)
%r 時間、12 時間 (hh:mm:ss [AP]M)
%T 時間、24 時間 (hh:mm:ss)
%S 秒 (00...59)
%s 秒 (00...59)
%p 午前または午後
%w 曜日 (0=日曜日...6=土曜日)
%U 週 (0...52)、日曜日が週の最初の日です
%u 週 (0...52)、月曜日が週の最初の日です
%% キャラクター % )

TIME_FORMAT(時刻,形式):
具体的な使用方法は DATE_FORMAT() と似ていますが、TIME_FORMAT は時間、分、秒のみを処理します (残りの記号は NULL 値または 0 を生成します)

21. 現在のシステム日付を取得する

CURDATE() を選択 
CURRENT_DATE() を選択
-> 2016-01-16
-> 2016-01-16

22. 現在のシステム時刻を取得する

CURTIME() を選択 
CURRENT_TIME() を選択
-> 17:44:22
-> 17:44:22

23. NOW(), SYSDATE(), CURRENT_TIMESTAMP(), LOCALTIME(): システムの現在の日付と時刻を取得します。

今すぐ選択() 
SYSDATE() を選択 
CURRENT_TIMESTAMP() を選択 
CURRENT_TIMESTAMPを選択 
ローカル時間()を選択 
ローカル時間を選択
-> 2016-01-16 17:44:41
-> 2016-01-16 17:44:41
-> 2016-01-16 17:44:41
-> 2016-01-16 17:44:41
-> 2016-01-16 17:44:41
-> 2016-01-16 17:44:41

24. UNIX_TIMESTAMP(date): タイムスタンプを取得する

UNIX_TIMESTAMP() を選択 
UNIX_TIMESTAMP('2016-01-16')を選択します 
UNIX_TIMESTAMP('2016-01-16 23:59:59')を選択します
-> 1452937627
-> 1452873600
-> 1452959999

25. FROM_UNIXTIME(unix_timestamp,format): タイムスタンプを日付と時刻に変換する

FROM_UNIXTIME(1452959999)を選択します 
FROM_UNIXTIME(1452959999,'%Y-%m-%d %H:%i:%s') を選択してください
-> 2016-01-16 23:59:59
-> 2016-01-16 23:59:59

26. SEC_TO_TIME(秒): 秒を時間に変換する

SEC_TO_TIME(2378)を選択します
-> 00:39:38

27. TIME_TO_SEC(時間): 時間を秒数に変換する

TIME_TO_SEC('22:23:00')を選択します
-> 2378

28. ADDTIME(time, times): 時間に回数を加算する

SELECT ADDTIME("2015-12-31 23:59:59",'01:01:01')
-> 2016-01-01 01:01:00

29. CONVERT_TZ(date,from_tz,to_tz): タイムゾーンを変換する

CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') を選択します
-> 2004-01-01 22:00:00

30. STR_TO_DATE(日付, 形式): 文字列を指定された形式の日付と時刻に変換する

STR_TO_DATE('2015-01-01', '%Y-%m-%d') を選択してください
-> 2015-01-01

31. LAST_DAY(日付): 月の最終日を取得します。

LAST_DAY(SYSDATE())を選択します 
LAST_DAY('2015-02-02')を選択します 
LAST_DAY('2015-02-02 00:22:33')を選択します
-> 2016-01-31
-> 2015-02-28
-> 2015-02-28

32. MAKEDATE(year, dayofyear): パラメータ(year, day)に基づいて日付を取得します。

製造日を選択(2015,32)
-> 2015-02-01

33. MAKETIME(時間、分、秒): パラメータ(時間、分、秒)に従って時間を取得します。

メイクタイムを選択(12,23,34)
-> 12:23:34

34. YEARWEEK(日付): 日付の年と週を取得します

YEARWEEK(SYSDATE()) を選択 
YEARWEEK('2015-01-10') を選択 
YEARWEEK('2015-01-10',1) を選択
-> 201602
-> 201501
-> 201502

35. WEEKOFYEAR(日付): 現在の日が属する年の週番号を取得します。

週年度(SYSDATE())を選択します 
週年度を選択('2015-01-10')
-> 2
-> 2

-> 2
-> 2

MySQLでよく使われるいくつかの時間形式変換関数を以下にまとめます。

1. from_unixtime(タイムスタンプ、フォーマット):

timestamp は 14290450779 などの int 時間です。format は変換形式で、次の形式が含まれます。

%M 月名 (1月...12月)
%W 曜日 (日曜日...土曜日)
%D 英語の接頭辞付きの月の日 (1 日、2 日、3 日など)
%Y 年、数字、4桁
%y 年、数字、2桁
%a 曜日の略称 (Sun...Sat)
%d 月の日付、数字 (00...31)
%e 月の日付、数値 (0...31)
%m 月、数字 (01...12)
%c 月、数字 (1...12)
%b 月名の省略形 (Jan...Dec)
%j 年の日数 (001...366)
%H 時間 (00...23)
%k 時間 (0...23)
%h 時間 (01...12)
%I 時間 (01...12)
%l 時間 (1...12)
%i 分、数字 (00...59)
%r 時間、12 時間 (hh:mm:ss [AP]M)
%T 時間、24 時間 (hh:mm:ss)
%S 秒 (00...59)
%s 秒 (00...59)
%p 午前または午後
%w 曜日 (0=日曜日...6=土曜日)
%U 週 (0...52)、日曜日が週の最初の日です
%u 週 (0...52)、月曜日が週の最初の日です

2. unix_timestamp(日付):

この関数は from_unixtime() の逆です。前者は Unix タイムスタンプを読み取り可能な時刻に変換し、unix_timestamp() は読み取り可能な時刻を、datetime に格納された時刻をソートするときに使用される Unix タイムスタンプに変換します。たとえば、unix_timestamp('2009-08-06 10:10:40') は 1249524739 になります。

unix_timestamp() がパラメータを渡さずに呼び出されると、now() 関数が呼び出され、現在の時刻が自動的に取得されます。

3. date_format(日付、形式):

date_format() は、日付または日付時刻型の値を任意の時刻形式に変換します。たとえば、一般的なアプリケーション シナリオでは、テーブルに更新時刻のフィールドがあり、これは datetime 型で保存されます。ただし、フロント エンドで表示する場合は、年、月、日 (xxxx-xx-xx) のみを表示する必要があります。この場合、結果セットでプログラム ループを必要とせずに、date_format(date,'%Y-%m-%d ') を使用できます。

以下もご興味があるかもしれません:
  • MySQL の一般的な日付比較および計算関数
  • MySQLは現在の日付と時刻を取得する関数
  • MySQL でよく使用される日付と時刻/数値関数の詳細な説明 (必読)
  • MySQL の日付型の単一行関数コードの詳細な説明

<<:  JS のオブジェクトリテラルの詳細な説明

>>:  Windows および Linux での Redis のインストールとデーモン設定

推薦する

IE6 の select を div でカバーできないバグの解決方法

div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...

期間限定フラッシュセール機能を実装するJavaScript

この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

CSS で実現される HTML 背景色のグラデーション

エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...

メンテナンス可能なJSコードの書き方を教えます

目次保守可能なコードとは何ですか?コード規約1. 読みやすさ2. 変数と関数の命名3. 透過的な変数...

three.js を使用してクールなアシッドスタイルの 3D ページ効果を実現します

この記事では、主にReact + three.jsテクノロジースタックを使用して3Dモデルの読み込み...

VMware ESXi のインストールと使用記録(ダウンロード付き)

目次1. ESXiをインストールする2. ESXiをセットアップする3. ESXiを起動するESXi...

ubuntu15.10 での hadoop2.7.2 の詳細なインストールと設定

Linux での Hadoop インストール チュートリアルはインターネットや書籍に多数ありますが、...

CSSセレクターでの正規表現の使用

はい、CSS にも正規表現があります (アーメン) CSS で目立つための 2 つの強力なツール: ...

Docker Compose マルチコンテナデプロイメントの実装

目次1. WordPressの導入1. 環境を整える(II) イメージを実行するDocker の作成...

Mysql 文字列の傍受と指定された文字列内のデータの取得

序文: 正規表現のインターセプションに似た、MySql フィールドの文字列から特定の文字を抽出すると...

Google の新しい UI から学べること (画像とテキスト)

2011 年に最も顕著なウェブサイトの変更は、一連の製品に新しいユーザー インターフェースを導入した...

DockerはRedis5.0をビルドし、データをマウントします

目次1. 永続データの簡単なマウント2. DockerFileでイメージをビルドし、設定ファイルを指...

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

オブジェクトがメソッドを呼び出す順序:インスタンス内にメソッドが存在しない場合は、インスタンス オブ...