[DATE_FORMAT関数]日付や時刻の表示形式を指定して表示する
日付や時刻の表示形式を指定して表示したい場合、DATE_FORMAT関数を使用します。
DATE_FORMAT関数を使うと、日時や日付などの値が指定した日時形式の文字列に変換され、表示されます。日付や時刻をほかの文字列と結合する場合にも、DATE_FORMAT関数を使用します。
DATE_FORMAT関数の計算結果は文字列型になるため、フィールドは文字列(1行)を使用し、自動計算を設定して、計算式を記載してください。
DATE_FORMAT関数の基本的な使いかた
DATE_FORMAT(フィールドコード, "日時の形式", "タイムゾーン") |
具体的な記載例は計算式の例で紹介しています。
引数の詳細
DATE_FORMAT関数には、第1引数(フィールドコード)、第2引数(日時の形式)、第3引数(タイムゾーン)を指定します。各引数の基本的な使いかたを説明します。
第1引数:フィールドコード
第1引数には、次のフィールドを使用できます。フィールドは、フィールドコードで指定します。
- 日時
1000年1月1日0時0分(協定世界時)から9999年12月31日23時59分(協定世界時)までの日時を指定できます。 - 日付
- 時刻
- 作成日時
- 更新日時
- 数値
- 計算
また、次の演算子と関数も使用できます。
+, -, *, /, ^, SUM
フィールドに入力した日時だけではなく、日時に時間を足し引きするなど、計算結果の日付を指定することも可能です。計算式には、時間を秒単位で指定します。たとえば、1時間は「3600」、または「60*60*1」のように指定します。
- 翌日の日付を表示する例:
DATE_FORMAT(日付+24*60*60*1, "YYYY/MM/dd", "Etc/GMT")
第2引数:日時の形式
第2引数に指定する日時の形式は、次の表の書式指定子を使用して指定します。それぞれの書式指定子は、対応する文字列に置き換わります。
書式指定子 | 説明 | 2020年4月1日正午を変換した場合の文字列 |
---|---|---|
YYYYまたはyyyy | 西暦の年に置き換わります。 | 2020 |
MMMM | レコードを編集したユーザーが設定している表示言語の月に置き換わります。 | 英語の場合:April 日本語の場合:4月 中国語の場合:四月 |
MMM | レコードを編集したユーザーが設定している表示言語の、短縮形の月に置き換わります。 | 英語の場合:Apr |
MM | ゼロ埋めありの月に置き換わります。 | 04 |
M | ゼロ埋めなしの月に置き換わります。 | 4 |
dd | ゼロ埋めありの日に置き換わります。 | 01 |
d | ゼロ埋めなしの日に置き換わります。 | 1 |
a | レコードを編集したユーザーが設定している表示言語の、「午前」または「午後」に置き換わります。 | 英語の場合:PM 日本語の場合:午後 中国語の場合:下午 |
KK | 午前を0時から11時とした、12時間表記の時表示に置き換わります。ゼロ埋めされます。 | 00 |
K | 午前を0時から11時とした、12時間表記の時表示に置き換わります。ゼロ埋めされません。 | 0 |
hh | 午前を1時から12時とした、12時間表記の時表示に置き換わります。ゼロ埋めされます。 | 12 |
h | 午前を1時から12時とした、12時間表記の時表示に置き換わります。ゼロ埋めされません。 | 12 |
HH | 1日を0時から23時とした、24時間表記の時表示に置き換わります。ゼロ埋めされます。 | 12 |
H | 1日を0時から23時とした、24時間表記の時表示に置き換わります。ゼロ埋めされません。 | 12 |
kk | 1日を1時から24時とした、24時間表記の時表示に置き換わります。ゼロ埋めされます。 | 12 |
k | 1日を1時から24時とした、24時間表記の時表示に置き換わります。ゼロ埋めされません。 | 12 |
mm | ゼロ埋めありの分表示に置き換わります。 | 00 |
m | ゼロ埋めなしの分表示に置き換わります。 | 0 |
ss | ゼロ埋めありの秒表示に置き換わります。 | 00 |
s | ゼロ埋めなしの秒表示に置き換わります。 | 0 |
Z | UTC(協定世界時)との時差に置き換わります。hhmmの形式です。 | +0900 |
ZZ | UTC(協定世界時)との時差に置き換わります。hh:mmの形式です。 | +09:00 |
ZZZ | タイムゾーンのIDに置き換わります。 | Asia/Tokyo |
第3引数:タイムゾーン
第3引数にはタイムゾーンを指定します。
第1引数で日付/時刻フィールドを指定した場合は、「Etc/GMT」(協定世界時のタイムゾーンID)を指定します。
それ以外のフィールドを指定した場合は、どのタイムゾーンで表示するかを選ぶことができます。
例:DATE_FORMAT(日時, "YYYY年M月d日", "Asia/Tokyo")
サマータイムがあるタイムゾーンを指定した場合は、計算結果にサマータイムが反映されます。
例)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 に変換されます。
「system」を指定すると、cybozu.com共通管理で設定されているタイムゾーン(システムタイムゾーン)が適用されます。
計算式の例
DATE_FORMAT関数を使用した計算式の例を説明します。
DATE_FORMAT関数の計算結果は文字列型になるため、計算式は文字列(1行)に記載しましょう。
計算式:DATE_FORMAT(日付, "YYYY年M月d日", "Etc/GMT") 「日付」フィールドの形式を○○年○○月○○日に変えます。 「日付」フィールドの値が「2020-04-01」の場合、計算結果は2020年4月1日になります。 |
計算式:DATE_FORMAT(日時, "YYYY-MM-dd HH:mm", "America/Los_Angeles") 「日時」フィールドの形式を「YYYY-MM-dd HH:mm」にします。また、タイムゾーンを太平洋標準時に変えます。 「日時」フィールドの値が「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」になります。 ![]() |
計算式:DATE_FORMAT(申込日 + (60*60*24*30), "YYYY-MM-dd", "Etc/GMT") 「申込日」フィールドの値から、30日後の試用終了日を計算します。 「申し込み」フィールドの値が「2021-07-01」の場合、計算結果は「2021-07-31」になります。 ![]() |
TIPS:UNIX時刻
UNIX時刻とは、1970年1月1日午前0時(協定世界時)からの経過秒数のことです。UNIXタイムスタンプとも呼ばれます。たとえば日時が2016年4月1日午前0時(協定世界時)の場合、UNIX時刻は「1459468800」です。
第1引数には、UNIX時刻を指定することも可能です。-30610224000以上、253402300799以下のUNIX時刻を指定できます。
また、第1引数で数値、計算フィールドを指定した場合は、そのフィールドの値がUNIX時刻として扱われます。