月、日、年、曜日とかの表示を自在にしてくれるformatDate関数です。
month関数で数字が合わなかったりするコトがあるので重宝してます。
formatDate関数の場所等
データベースのプロパティ内で利用します。
こちらのFomulaを選ぶと関数が入力できるようになります。

プロパティが「Fomula」になったら、Edit propertyからEditを選択。
すると関数の入力画面になります。

formatDateと打ち込むか、左側のバーに項目があるので選択します。

formatDate関数の書き方
formatDate( 変換したい対象 , “出力したい形式” )
変換したい対象を”で囲むかは、内容によります。少し↓で。
出力したい形式は””で囲みます。
変換したい対象は
・列を指定する
・now()から表示する
等があります。
変換したい対象に列の内容を指定する場合
列の内容を指定するので、prop()で囲みます。
〇 formatDate(prop(“列の名前”),”M”)
× formatDate(“列の名前”,”M”)
now()等の関数を指定する場合
関数の値を参照するので、prop()は不要です。
〇 formatDate(now(),”M”)
× formatDate(prop(now()),”M”)
formatDate関数でのよくあるエラー:Type mismatch ____ is not a Date
選んだ列が日付のデータじゃない場合は
Type mismatch ____ is not a Date とエラー表示されます。
このエラーが出てるときは「日付って認識されてないな」って思ってください。

よくあるのは列を指定したい時に、prop()で囲っていないことです。
その場合は囲ってあげてください。
formatDate関数でのよくあるエラー:Invalid property reference: now()
「プロパティ参照が無効です」という意味です。
関数の結果を見たいのにprop()で囲っているので見られないのです。

よくあるのは関数が対象なのに、propで囲ってしまっていることです。
その場合はprop()を消してください。
formatDate関数でのよくあるエラー:Undefined constant: __
出力形式を””で囲っていない
〇 formatDate(now(), ”M”)
× formatDate(now(), M)
formatDate関数の出力形式一覧
例はnow()で「2023年4月1日土曜日PM8時50分」から出力します。
・大文字、小文字も影響する
・半角
たとえば”Y”なら2023と表示されますが、”y”ならyと表示されます。
現在の日時から変換する場合は「formatDate(now(),___)」の下線部に入れてください。
特定の列から変換する場合は now() を prop(“列名”) に変更してください。
一部、達成するのに式を組むのが必要になる場合は、式全てを記載しましたので、そのまま張り付けてください。
now()からの変換で書いています。
特定の列から変換する場合は、同じく now() を prop(“列名”) に変更してください。
年、月、日をまとめて出したい場合
小文字でmとかdになると別項目になるのでご注意
| 表示したい内容 | 入力内容 |
| 2023年4月 | “YYYY年M月” |
| 2023年4月1日 | “YYYY年M月D日” |
| 2023年4月1日Sat | “YYYY年M月D日ddd” |
| 2023年4月1日 (土) | replace(replace(replace(replace(replace(replace(replace(formatDate(now(), “YYYY年M月D日ddd”), “Sat”, “(土)”), “Sun”, “(日)”), “Mon”, “(月)”), “Tue”, “(火”), “Wed”, “(水)”), “Thu”, “(木)”), “Fri”, “(金)”) |
| 2023年4月1日Sat 20時 | “YYYY年M月D日ddd HH時” |
| 2023年4月1日Sat 20時50分 | “YYYY年M月D日ddd HH時MM分” |
ややこしく組まなくてもサクッと表示できるパラメータ
| 表示したい内容 | 入力内容 |
| 04/01/2023 | “L” |
| 4/1/2023 | “l” |
| April 1, 2023 | “LL” |
| 1-Apr-23 | “ll” |
| April 1, 2023 11:11 AM | “LLL” |
| 2023/4/1 11:11 | “lll” |
| Saturday, April 1, 2023 11:11 AM | “LLLL” |
| Sat, Apr 1, 2023 11:11 AM | “llll” |
西暦、和暦で何年かを表示したい場合
和暦はパラメターがないので関数で調整が必要です。
西暦から2018を引いて文字列を付けてます。
・concatは文字列同士が条件→formatで文字列に変更
・引き算は数字同士が条件→toNumberで2023を数字に変換
とやってます。もっと効率いいやり方がどっかにあるかも。
| 表示したい内容 | 入力内容 |
| 2023 | “Y” |
| 23 | “YY” |
| 2023年 | “Y年” |
| 令和5年 | concat(“令和”, format(toNumber(formatDate(now(), “Y”))-2018), “年”) |
4半期を表示したい場合
| 表示したい内容 | 入力内容 |
| 2 | “Q” |
| 2nd | “Qo” |
| 02 | “QQ” |
| 第2四半期 | 第Q四半期” |
月だけを表示したい場合
| 表示したい内容 | 入力内容 |
| 4 | “M” |
| 4th | “Mo” |
| 04 | “MM” |
| Apr | “MMM” |
| April | “MMMM” |
| 4月 | “M月” |
1年の何週目かを表示したい場合(大文字だとISO準拠)
| 表示したい内容 | 入力内容 |
| 13 | “w” |
| 13th | “wo” |
| 13 | “ww” |
| 13週目 | “w週目” |
1年が始まって何日目か、今年はあと何日あるかを表示したい場合
274は今年の残り日数。そのまま張り付けてください。
| 表示したい内容 | 入力内容 |
| 91 | “DDD” |
| 91st | “DDDo” |
| 091 | “DDDD” |
| 91日目 | “DDD日目” |
| 274 | 365 – toNumber(formatDate(now(), “DDD”)) |
| 今年はあと274日 | concat(“今年はあと”, format(365 – toNumber(formatDate(now(), “DDD”))), “日”) |
月の何日目かを表示したい場合
| 表示したい内容 | 入力内容 |
| 1 | “D” |
| 1st | “Do” |
| 01 | “DD” |
| 1日 | “D日” |
週の何日目かを表示したい場合(月曜日スタート)
| 表示したい内容 | 入力内容 |
| 6 | “d” |
| 6th | “do” |
曜日を表示したい場合
| 表示したい内容 | 入力内容 |
| Sa | “dd” |
| Sat | “ddd” |
| Saturday | “dddd” |
| (土) | replace(replace(replace(replace(replace(replace(replace(formatDate(now(), “ddd”), “Sat”, “(土)”), “Sun”, “(日)”), “Mon”, “(月)”), “Tue”, “(火”), “Wed”, “(水)”), “Thu”, “(木)”), “Fri”, “(金)”) |
AM、PM、午前、午後を表示したい場合
午前、午後としたい場合はパラメータが2個しかないので、ifでの切り替えがカンタン
| 表示したい内容 | 入力内容 |
| PM | “A” |
| pm | “a” |
| 午後 | if(formatDate(now(),”A”) == “AM”,”午前”,”午後”) |
12時間表記、24時間表記で時間を表示したい場合
| 表示したい内容 | 入力内容 | |
| 20 | “H” | 0時から23時を1桁で表します。 |
| 20 | “HH” | 0時から23時を2桁で表します。 |
| 8 | “h” | 1時から12時を1桁で表します。 |
| 08 | “hh” | 1時から12時を2桁で表します。 |
| 20 | “k” | 1時から24時を1桁で表します。 |
| 20 | “kk” | 1時から24時を2桁で表します。 |
分を表示したい場合
| 表示したい内容 | 入力内容 |
| 50 | “m” |
| 50 | “mm” |
| 50分 | “m分” |
タイムゾーンを表示したい場合
| 表示したい内容 | 入力内容 |
| +09:00 | “Z” |
| 900 | “ZZ” |
| GMT+09:00 | “ZZZ” |


コメント