■記事リスト / ▲上のスレッド
■14341 / 親記事) |
月毎の日数端数を切り捨てた月期間の計算について
|
□投稿者/ TS -(2024/05/18(Sat) 08:51:35)
| 2024/05/18(Sat) 09:03:07 編集(投稿者)
いつもお世話になっております。
・桐V9 2012
表定義において、項目計算式で期間の計算をするにあたり、 月毎の端数は切り捨て、日数フルの月は1ヶ月として、 期間の計算をしたいと考えていますが、計算式等が思い浮かばす数日間(今週月より)悩んでおります。 ついては、式や項目のデータ型等ご教示いただければと思います。 よろしくお願いします。
(例) 2024年4月12日 から 2024年7月29日 → 2ヶ月
× 2024年4月12日 から 2024年4月30日 1ヶ月 2024年5月1日 から 2024年5月31日 1ヶ月 2024年6月1日 から 2024年6月30日 × 2024年7月1日 から 2024年7月29日
|
|
|
▽[全レス10件(ResNo.6-10 表示)]
■14348 / ResNo.6) |
Re[4]: 月毎の日数端数を切り捨てた月期間の計算について
|
□投稿者/ MAKOTO -(2024/05/18(Sat) 22:32:01)
| TSさんこんにちは 適当に作ってみました。 関数はヘルプを参照してください。 半角の#を押して右に矢印キーを押すと参考になる記述が 出ます。
|
|
TS.zip/1KB
|
|
■14349 / ResNo.7) |
Re[5]: 月毎の日数端数を切り捨てた月期間の計算について
|
□投稿者/ TS -(2024/05/19(Sun) 10:45:24)
| MAKOTO 様 回答 また、添付ファイルの表を作成していただき有難うございました。
[開始期間]、[終了期間]、[開始日]、[終了日]が
確かに日時型になっており、[月数]で求めたい月数が出力されていました。
やりたかったことが実現されており、大変助かりました。
日時型 のデータは扱いづらい印象があり、
ついついデータ型として使うことにおっくうになっていました。
また、今回照会させてもらった既テーブルのデータ型変更
(及びデータの再入力・チェック)に時間がかかってしまい、
返信が遅れてしまいすいませんでした。
大変に勉強になりました。
本当に有難うございました。
|
解決済み! |
|
■14357 / ResNo.8) |
Re[2]: 日付が火付けになってしまった
|
□投稿者/ ONnoji -(2024/05/20(Mon) 21:39:13)
| 2024/05/22(Wed) 10:53:31 編集(投稿者) 2024/05/20(Mon) 22:40:11 編集(投稿者)
TSさん
>> 日付は、本質的に文字列型または日時型であるのが自然ですよ。 > > 勉強になります。 > TBLをバックアップコピーし、 > [起算開始]、[起算終了] のデータ型を日時型にしてみたいと思います。 > また、今回照会させてもらった既テーブルのデータ型変更 > (及びデータの再入力・チェック)に時間がかかってしまい、
当方は土日月とPCの前に居ませんでしたので、ご返事が遅れました。
当方の発言で、なんかマッチで火を付けてしまったような気がしています。
今まで、数値型でデータを蓄積してきたのですから、それ自体には問題は無いのですよ。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ただ、一般論で言うと
文字列型の日付文字列のデータか、日時型のデータが、日付の処理に適していますよと申し上げた次第です。
ややこしい事をしようとすると、
数値型 → 文字列型(日付文字列) → (必要に応じて)日時型
または
数値型 → 日時型
の変換が必要になるので、数値型よりも云々と申し上げたわけです。 ・・・・・・・・
それが・・・、まさか表の定義を変更してしまうとは思っていませんでしたので非常に驚いてしまいました。
日付が火付けになってしまったようで恐縮です。m(__)m
p.s.
確かに入力の際に0〜9の数字と正負記号しか受け付けないという特性は便利です。※指数表現も受け付けるでしょうけれども(^^ゞ
なので、数値型で入力を受け取るというのは実践的なテクニックと言えますよ。
だから、オペレータが入力する項目として数値型であっても何ら問題はないのです。※私は表の定義は自由だと申し上げていましたよ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
しかし、それとは別に数値を日付として処理する場合にはちょっと面倒になるわけです。
そこで、入力と日付計算のどちらか一方を選ぶのではなく、入力は数値型、計算のタネは日時型というように考えることも出来ます。 ◎◎・・・・ ◎◎・・・・・・・ つまり、
[入力用の数値型項目]と[日時型の計算項目]をペアで運用するというのもアリだろうと思います。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
[日時型の計算項目]の計算式は、毎回同じなのでいわずもがなですが・・・
#日時値( #sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 ) ) ↑ ↑ 区切り文字はお好きなものを 区切り文字はお好きなものを
もしも、[文字列型の計算項目]がよろしければ
#sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 ) ↑ ↑ 区切り文字はお好きなものを 区切り文字はお好きなものを
↑これは毎回の変換手順でワンパターンですから、もう何度もご覧になって目に焼き付いているかもしれませんね??? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・
このように、日時型に変換するか、文字列型の日付文字列に変換すれば、日時に関する各種の関数が利用できるわけです。
でも、数値型の場合には何もできないのです、しかし、オペレータの入力する項目という見方からすれば実践的ですね。
オペレータさんの入力のやり易さを優先して、なおかつ日時の計算が簡単に出来るようにとハイブリッドな表定義にするのが望ましいかもしれませんね。
なお、今回は早合点して拙速に表の定義を変えたりしないでくださいね。
あくまでも、当方( ONnoji )は他人ですから、TSさんの状況を事細かに把握して強制・矯正しているわけではないのです。
だから「あ〜、また ONnoji が何か言ってるよ。」という程度に気楽に読んでください。
p.p.s.
ヘルプでキーワード: 日付文字列 を検索してください。
"日付文字列"は、日時型が存在しなかったDOS桐の時から日時の計算をする時の基本です。
"日付文字列"の知識は基本中の基本ですから、必ずヘルプを読んでくださいね。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
[桐 - ヘルプ]→ データと式 → 計算式 → 日時の計算 → 日時文字列
日時型は、"日付文字列"に時刻(時分秒:hms)を追加したデータ型と思ってください。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
|
|
|
■14372 / ResNo.9) |
Re[3]: 日付が火付けになってしまった
|
□投稿者/ TS -(2024/05/22(Wed) 23:04:10)
| ONnoji 様
> あくまでも、当方( ONnoji )は他人ですから、TSさんの状況を事細かに把握して強制・矯正しているわけでは
> ないのです。だから「あ〜、また ONnoji が何か言ってるよ。」という程度に気楽に読んでください。
桐のベテランユーザ(ONnoji様等)から直接御指南していただけるものは、素直に耳を傾けさせてただこうと思っております。
> #日時値( #sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 ) )
> #sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 )
すごいです。これを知っておくだけでも、非常時に相当役立つ感じがします。
> 日時型は、"日付文字列"に時刻(時分秒:hms)を追加したデータ型と思ってください。
なるほど、そう考えると少しとっつきにくい感が低くなった気がします。
仕事の関係で、返事が少し遅くなってしまいましたが、今回の回答に関しては、
良い勉強になったと感じております。
引き続きご指導等いただければと思います。
本当に有難うございました。
|
|
|
■14375 / ResNo.10) |
Re[4]: 日付が火付けになってしまった
|
□投稿者/ ONnoji -(2024/05/23(Thu) 04:28:45)
| > #日時値( #sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 ) ) > #sstr( #str( [数値型項目], 1, 4 ) + "-" + #sstr( #str( [数値型項目], 5, 2 ) + "-" + #sstr( #str( [数値型項目], 7, 2 )
式が誤っていました。
以下のように、かっこ" )"を挿入してお使いください。
#日時値( #sstr( #str( [数値型項目] ), 1, 4 ) + "-" + #sstr( #str( [数値型項目] ), 5, 2 ) + "-" + #sstr( #str( [数値型項目] ), 7, 2 ) ) ↑ ↑ ↑ かっこ" )"を挿入 かっこ" )"を挿入 かっこ" )"を挿入
#sstr( #str( [数値型項目] ), 1, 4 ) + "-" + #sstr( #str( [数値型項目] ), 5, 2 ) + "-" + #sstr( #str( [数値型項目] ), 7, 2 ) ↑ ↑ ↑ かっこ" )"を挿入 かっこ" )"を挿入 かっこ" )"を挿入
|
|
|
■記事リスト /
レス記事表示 →
[親記事-9]
[10-10]
|