DATE_FORMAT関数:日付や時刻の表示形式を指定して表示する

記事番号:040501

計算式にDATE_FORMAT関数を設定すると、日時や日付などの値を指定した日時形式の文字列に変換します。
日付や時刻をほかの文字列と結合する場合にも、DATE_FORMAT関数を使用します。

DATE_FORMAT関数の構文

コピーされました
DATE_FORMAT(日時, "日時の形式", "タイムゾーン")

DATE_FORMAT関数には、第1引数(日時)、第2引数(日時の形式)、第3引数(タイムゾーン)を指定します。

第1引数:日時

第1引数には、表示形式を指定したい日時を指定します。
フィールドコード、UNIX時刻、または計算式で指定します。

フィールドコードで指定する

フィールドコードで指定する場合、次のフィールドを指定できます。

  • [日時]
  • [日付]
  • [時刻]
  • [作成日時]
  • [更新日時]
  • [数値]
  • [計算]

[数値]フィールドまたは[計算]フィールドを指定する場合は、そのフィールドの値がUNIX時刻として扱われます。

UNIX時刻で指定する

UNIX時刻を直接指定できます。
UNIX時刻は、-30610224000以上、253402300799以下の範囲で指定します。

計算式を指定する

日時に時間を足し引きするといった、計算結果の日時も指定できます。

次の演算子と関数が使用できます。

  • +
  • -
  • *
  • /
  • ^
  • SUM関数

計算式で時間を入力するときは、秒単位で指定します。
たとえば、1時間は「3600」、または「60*60*1」のように指定します。

次の例は、翌日の日付を表示する計算式です。

コピーされました
DATE_FORMAT(日付+24*60*60*1, "YYYY/MM/dd", "Etc/GMT")

第2引数:日時の形式

第2引数には、日時の形式を指定します。
日時の形式は、次の方法で指定します。

  • 日時の形式を直接指定する
  • フィールドコードで指定する

日時の形式の指定方法は、次の項目を参照してください。
指定できる日時の形式

フィールドコードで指定する場合、次のフィールドが指定できます。

  • [文字列(1行)]
  • [文字列(複数行)]

日時の形式に記載した文字列を計算結果に表示したい場合

日時の形式に記載した文字列を計算結果に表示したい場合は、表示したい文字列をシングルクォーテーション(')で囲んでください。
たとえば計算結果を「Date: 日付」という形式で表示したい場合、次のように指定します。

コピーされました
DATE_FORMAT(フィールドコード, "'DATE:' d", "Asia/Tokyo")

シングルクォーテーション(')を計算結果に文字として表示したい場合は、日時形式にシングルクォーテーションを2つ続けて「''」と記載してください。
たとえば計算結果を「'Date: 日付'」という形式で表示したい場合、次のように指定します。

コピーされました
DATE_FORMAT(フィールドコード, "'''DATE:' d''", "Asia/Tokyo")

第3引数:タイムゾーン

第3引数には、タイムゾーンを指定します。

第1引数で[時刻]フィールドまたは[日付]フィールドを指定した場合は、「Etc/GMT」(協定世界時のタイムゾーンID)を指定します。「Etc/GMT」以外を指定すると、時刻や日付のずれが発生する場合があります。

コピーされました
DATE_FORMAT(時刻, "hh:mm", "Etc/GMT")

それ以外のフィールドやUNIX時刻を指定した場合は、表示したいタイムゾーンを指定します。

コピーされました
DATE_FORMAT(日時, "YYYY年M月d日", "Asia/Tokyo")

「system」を指定すると、cybozu.cn共通管理で設定されているタイムゾーン(システムタイムゾーン)が適用されます。

サマータイムの扱い

サマータイムがあるタイムゾーンを指定した場合は、計算結果にサマータイムが反映されます。

次の例は、サマータイムがあるタイムゾーンを指定している計算式です。

コピーされました
DATE_FORMAT(日時, "YYYY/MM/dd HH:mm ZZ", "America/Los_Angeles")

この例では、計算結果は次のようになります。

  • 協定世界時の「2019-01-01 00:00」は「2018/12/31 16:00 -08:00」に変換されます。
  • 協定世界時の「2018-08-01 00:00」は「2018/07/31 17:00 -07:00」に変換されます。

指定できる日時の形式

DATE_FORMAT関数の第2引数に指定できる日時の形式は、次のとおりです。

年を表示する形式

形式変換結果の例説明
YYYY2020西暦の年に変換します。小文字の「yyyy」も使用できます。

月を表示する形式

形式変換結果の例説明
MMMMApril
4月
レコードを編集したユーザーが設定している表示言語の月に変換します。
MMMApr
4月
レコードを編集したユーザーが設定している表示言語の月に変換します。英語では短縮形が表示されます。
MM04ゼロ埋めありの月に変換します。
M4ゼロ埋めなしの月に変換します。

日付を表示する形式

形式変換結果の例説明
dd01ゼロ埋めありの日付に変換します。
d1ゼロ埋めなしの日付に変換します。

時間を表示する形式

形式変換結果の例説明
aPM
午後
下午
レコードを編集したユーザーが設定している表示言語の、「午前」または「午後」に変換します。
KK00午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされます。
第1引数(日時)で正午を指定している場合、「00」に変換します。
K0午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされません。
第1引数(日時)で正午を指定している場合は、「0」に変換します。
hh12午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされます。
第1引数(日時)で正午を指定している場合は、「12」に変換します。
h12午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされません。
第1引数(日時)で正午を指定している場合は、「12」に変換します。
HH001日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされます。
第1引数(日時)で午前0時を指定している場合は、「00」に変換します。
H01日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされません。
第1引数(日時)で午前0時を指定している場合は、「0」に変換します。
kk241日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされます。
第1引数(日時)で午前0時を指定している場合は、「24」に変換します。
k241日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされません。
第1引数(日時)で午前0時を指定している場合は、「24」に変換します。

分を表示する形式

形式変換結果の例説明
mm05ゼロ埋めありの分表示に変換します。
m5ゼロ埋めなしの分表示に変換します。

秒を表示する形式

kintoneの日時や時刻を扱うフィールドでは、秒数を保存していません。
第1引数でフィールドコードを指定すると、秒数は0秒として扱われます。

形式変換結果の例説明
ss01ゼロ埋めありの秒表示に変換します。
UNIX時刻の「1695179101」(2023年9月20日12時5分1秒)を変換した場合、「01」に変換します。
s1ゼロ埋めなしの秒表示に変換します。
UNIX時刻の「1695179101」(2023年9月20日12時5分1秒)を変換した場合、「1」に変換します。

タイムゾーンを表示する形式

形式変換結果の例説明
Z+0900第3引数で指定したタイムゾーンと、UTC(協定世界時)との時差に変換します。hhmmの形式で表示します。
ZZ+09:00第3引数で指定したタイムゾーンと、UTC(協定世界時)との時差に変換します。hh:mmの形式で表示します。
ZZZAsia/Tokyo第3引数で指定したタイムゾーンのIDに変換します。

計算式の例

計算式では、引数としてフィールド名ではなくフィールドコードを指定してください。
次の例では、フィールド名とフィールドコードをすべて一致させています。

[日付]フィールドの形式を「****年**月**日」に変更する

次の例は、[日付]フィールドの形式を「****年**月**日」に変更する計算式です。

コピーされました
DATE_FORMAT(日付, "YYYY年M月d日", "Etc/GMT")

[日付]フィールドに「2020-04-01」を入力すると、「2020年4月1日」が表示されます。

[日時]フィールドの形式とタイムゾーンを変更する

次の例は、[日時]フィールドの形式を「YYYY-MM-dd HH:mm」に変更して、タイムゾーンを太平洋標準時にする計算式です。

コピーされました
DATE_FORMAT(日時, "YYYY-MM-dd HH:mm", "America/Los_Angeles")

[日時]フィールドに日本時間「2020-04-01 13:00」を入力すると、計算結果は「2020-03-31 21:00」になります。

氏名とレコード作成日時を結合して表示する

次の例は、氏名とレコード作成日時を「氏名-レコード作成日」の形で表示する計算式です。
氏名、ハイフン(-)、レコード作成日時を「&」を使って結合しています。

コピーされました
氏名 & "-" & DATE_FORMAT(作成日時, "YYYYMMdd", "system")

スクリーンショット:氏名フィールドとレコード作成日時を結合している

「氏名」フィールドに「田中 愛美」、レコードの作成日時に「2022-10-31 16:42」と入力されている場合、計算結果は「田中 愛美-20221031」になります。

生年月日から誕生月を表示する

次の例は、生年月日から誕生月を表示する計算式です。

コピーされました
DATE_FORMAT(生年月日, "MM", "Etc/GMT")

スクリーンショット:生年月日フィールドから誕生月を表示している

「生年月日」フィールドに「1969-12-31」を入力すると、「12」が表示されます。

申込日から30日後の試用終了日を計算する

次の例は、申込日から30日後の試用終了日を表示する計算式です。

コピーされました
DATE_FORMAT(申込日 + (60*60*24*30), "YYYY-MM-dd", "Etc/GMT")

スクリーンショット:試用終了日を自動で計算している画像

「申込日」フィールドに「2021-07-01」を入力すると、30日後の「2021-07-31」が表示されます。