キンコミ kintone user community

みんなの投稿

2022/10/05 10:50

日付の表記について質問させてください。

日付のフィールド(日付_1)があり、別のフィールドに"日付_1"の月に+1して、"yyyy年mm月"と表記させたいです。


日付_1が2022年10月5日の場合、
→2022年11月

創造でDATE_FORMATにネストをいれて、「DATE_FORMAT(DATE_FORMAT(日付_1,"m","Etc/GMT") + 1,"yyyy年d月","Etc/GMT")」と打ってみましたが、期待通りには行きませんでした、、

あと、単純に「+1」だと、"日付_1"が2022年12月の場合、2023年1月と表記させるのも難儀なのかと想像しております。

アイデアがございましたら共有いただけますと幸いです。
宜しくおねがいいたします。

3件のコメント (新着順)

きったんさんの案がいいのではと思います!
ただ、nghさんのご懸念の通り「12月」がネックですので、
きったんさん案を元に、
計算結果が13の場合を想定したif文を最終の文字列1行フィールドに入れると良いと思います。

IF(1を足した計算フィールド=13,日付の年表示+1&"年"&1&"月",日付の年表示&"年"&1を足した計算フィールド&"月")

※1を足した計算フィールドが13のとき、年表示に1を足して1月と表記する。そうでないばあいは年表示&年&1を足した計算フィールド&月


yamaさん!補足ありがとうございます!
12月のことなんてすっかり頭にありませんでした!

これでバッチリですね!

ngh
2022/10/05 19:52

yamaさん、コメントありがとうございます。

悩みどころをフォローしてくださりありがとうございます!
皆さんの、「それならばこういう要領で」とすぐに出てくるスキルがうらやましい限りですが、私はこのキンコミというありがたい場に頼らせていただき、社内kintoeを磨いていきます。

ありがとうございました。

ngh
2022/10/07 11:56

yamaさん、度々すみません。うまくいかないので、質問なのですが、各フィールドは下記であっていますでしょうか。



① 日付を月で表示(コード名:月)
DATE_FORMAT(日付_1,"M","Etc/GMT")



② 月表示した数字に1を足す(コード名:月+1)
月+1
↑「1970-01-01」の表示になります



文字列フィールド
IF(月+1=13, DATE_FORMAT(日付,"yyyy",Etc/GMT")+1&"年"&1&"月", DATE_FORMAT(日付,"yyyy",Etc/GMT")&"年"&月+1&"月")



イメージは持てるのですが、日常的には編集・作成をしていないものでして基礎的なことが踏まえられておりません。

お力添えいただけますと幸いです。

① 日付を月で表示(コード名:月)
DATE_FORMAT(日付_1,"M","Etc/GMT")

→ これは合ってます。

② 月表示した数字に1を足す(コード名:月+1)
月+1
↑「1970-01-01」の表示になります

→ この時点で日付表示になるのはおかしいので、「月」に数字が表示されていないのではないでしょうか?
計算フィールドの表示形式は「数値」にされてますでしょうか。
また、フィールドコードに「+」は使えないので、「月_1」などになりますね~。



IF(月+1=13, DATE_FORMAT(日付,"yyyy",Etc/GMT")+1&"年"&1&"月", DATE_FORMAT(日付,"yyyy",Etc/GMT")&"年"&月+1&"月")

・フィールドコードが合っていない
・"(ダブルクォーテーション)が足りない
ため、うまく計算できない(たぶんアプリ設定が保存できませんよね)と思われます。
下記でうまくいくと思います!

IF(月_1=13,DATE_FORMAT(日付_1,"YYYY","Etc/GMT")+1&"年"&1&"月",DATE_FORMAT(日付_1,"YYYY","Etc/GMT")&"年"&月_1&"月")

がんばってくださーい!

ngh
2022/10/07 17:22

yamaさん、ありがとうございます!希望する動きになりました!

月_1=13の場合だけ#VALUEになってしまいました。DATE_FORMAT(日付,"yyyy",Etc/GMT")+1の"+1"の部分がうまく機能しないようなので、年を表示するフィールドを作って年+1を作成してみます。

本当にありがとうございました^^

nghさん

”年を表示するフィールドを作って年+1を作成してみます。”
と解決はしているようですが、一応補足です。
DATE_FORMAT関数は文字列で結果が出るので、
計算式内でDATE_FORMAT(日付,"yyyy",Etc/GMT")+1としてもエラーになってしまいます。
一旦別のフィールドに保存した上で次の計算が必要です。

どの関数で文字列になるのか数値になるのかは下記のページが参考になりますよ~。
https://jp.cybozu.help/k/ja/user/app_settings/form/autocalc/calculation_type.html

ngh
2022/10/13 12:21

中尾典隆さん、ご教授ありがとうございます。

>DATE_FORMAT関数は文字列で結果が出る

これで、スッキリしました。「このやり方はできない。」「このやり方でできそう」という感覚だけで取り組んでいました。当たり前ながら、基礎・前提は大事ですね、、

ありがとうございました!

やまぐち
2022/10/05 12:04

きったんさんのアイデアをヒントに、別パターンを考えてみました。

① 日付を日で表示
② 月初から31日後の年月を表示
  DATE_FORMAT(日付+24*60*60*(32-[①のフィールド]), "YYYY年MM月", "Etc/GMT")
 ※式の中の*が半角だと表示されなくなってしまうので、全角で表記してます。


ngh
2022/10/05 19:48

やまぐちさん、コメントありがとうございます。

ゴールに対して、様々な解釈と仕組みが見られるのはとても勉強になります。ありがとうございました。

こんにちは~考えてみました。

まず細かいことですが、月を表示する場合mではなくMです。
小文字は「分」、大文字が「月」の表示になります。

日付をそのまま計算するより、作業用のフィールドを別に用意してもいいかもしれません。
私は2つ作業フィールドを作りました。
①日付を月で表示
②月表示した数字に1を足す

そして最終的に文字列フィールドで文字の結合をします。
「日付の年表示&年&1を足した計算フィールド&月」


ngh
2022/10/05 19:46

きったんさん、コメントありがとうございます。
作成イメージがつかめました!

M/mの件、勉強になりました。ありがたいです。

イメージがつかめて良かったです!
作業用に作った計算フィールドは、グループフィールドに入れて閉じておけばフィールド自体は見えなくなるのでお勧めです。
僕はよくこの手を使い、「システム使用欄」みたいな名前にしておくとなんかカッコよく見えますよ(笑)

ngh
2022/10/07 10:08

きったんさん、ありがとうございます!スマートな見た目でとても良いですね^^!