[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.com共通管理で設定されているタイムゾーン(システムタイムゾーン)が適用されます。

サマータイムの扱い

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

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

コピーされました
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関数が使用できるフィールド

DATE_FORMAT関数を使った計算の結果を表示する場合は、文字列(1行)フィールドで使用します。
文字列(1行)フィールドの「設定」画面で「自動計算する」にチェックを付け、計算式を入力してください。

計算フィールドでDATE_FORMAT関数の結果を直接表示しようとすると、エラーになります。
IF関数の条件式として使用するなど、関数の中であれば使用できます。

指定できる日時の形式

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

年を表示する形式

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

月を表示する形式

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

日付を表示する形式

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

時間を表示する形式

形式 変換結果の例 説明
a PM
午後
下午
レコードを編集したユーザーが設定している表示言語の、「午前」または「午後」に変換します。
KK 00 午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされます。
正午を変換した場合、「00」に変換します。
K 0 午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされません。
正午を変換した場合、「0」に変換します。
hh 12 午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされます。
正午を変換した場合、「12」に変換します。
h 12 午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされません。
正午を変換した場合、「12」に変換します。
HH 00 1日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされます。
正子を変換した場合、「00」に変換します。
H 0 1日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされません。
正子を変換した場合、「0」に変換します。
kk 24 1日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされます。
正子を変換した場合、「24」に変換します。
k 24 1日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされません。
正子を変換した場合、「24」に変換します。

分を表示する形式

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

秒を表示する形式

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

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

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

形式 変換結果の例 説明
Z +0900 第3引数で指定したタイムゾーンと、UTC(協定世界時)との時差に変換します。hhmmの形式で表示します。
ZZ +09:00 第3引数で指定したタイムゾーンと、UTC(協定世界時)との時差に変換します。hh:mmの形式で表示します。
ZZZ Asia/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」が表示されます。