[DATE_FORMAT関数]日付や時刻の表示形式を指定して表示する
計算式に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引数に指定できる日時の形式は、次のとおりです。
年を表示する形式
形式 | 変換結果の例 | 説明 |
---|---|---|
YYYY | 2020 | 西暦の年に変換します。小文字の「yyyy」も使用できます。 |
月を表示する形式
形式 | 変換結果の例 | 説明 |
---|---|---|
MMMM | April 4月 |
レコードを編集したユーザーが設定している表示言語の月に変換します。 |
MMM | Apr 4月 |
レコードを編集したユーザーが設定している表示言語の月に変換します。英語では短縮形が表示されます。 |
MM | 04 | ゼロ埋めありの月に変換します。 |
M | 4 | ゼロ埋めなしの月に変換します。 |
日付を表示する形式
形式 | 変換結果の例 | 説明 |
---|---|---|
dd | 01 | ゼロ埋めありの日付に変換します。 |
d | 1 | ゼロ埋めなしの日付に変換します。 |
時間を表示する形式
形式 | 変換結果の例 | 説明 |
---|---|---|
a | PM 午後 下午 |
レコードを編集したユーザーが設定している表示言語の、「午前」または「午後」に変換します。 |
KK | 00 | 午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされます。 第1引数(日時)で正午を指定している場合、「00」に変換します。 |
K | 0 | 午前を0時から11時とした、12時間表記の時表示に変換します。ゼロ埋めされません。 第1引数(日時)で正午を指定している場合は、「0」に変換します。 |
hh | 12 | 午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされます。 第1引数(日時)で正午を指定している場合は、「12」に変換します。 |
h | 12 | 午前を1時から12時とした、12時間表記の時表示に変換します。ゼロ埋めされません。 第1引数(日時)で正午を指定している場合は、「12」に変換します。 |
HH | 00 | 1日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされます。 第1引数(日時)で午前0時を指定している場合は、「00」に変換します。 |
H | 0 | 1日を0時から23時とした、24時間表記の時表示に変換します。ゼロ埋めされません。 第1引数(日時)で午前0時を指定している場合は、「0」に変換します。 |
kk | 24 | 1日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされます。 第1引数(日時)で午前0時を指定している場合は、「24」に変換します。 |
k | 24 | 1日を1時から24時とした、24時間表記の時表示に変換します。ゼロ埋めされません。 第1引数(日時)で午前0時を指定している場合は、「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」が表示されます。