filemaker-field-timestamp-01

FileMaker で 日付や時間 を使うときは タイムスタンプ を使おう

こんにちは。solb system の Teruhiro Kömaki です。

最近は、テクニック的なことよりも、設計や開発方法の勉強をしています。

というのも、やっぱり設計って楽しいなって思う反面、もっともっと追求しなければいけない!って思ったからです。

そんなとき、タイミングよく 株式会社ライジングサン・システムコンサルティングの岩佐さん のブログが目に入りまして、ICONIXプロセスという開発手法を知り、なにはともあれ、しっかりと勉強してみよう!と思い ユースケース駆動開発実践ガイド という本を購入しました。

【関連】株式会社ライジングサン・システムコンサルティング

私は、FileMaker界隈でいえば、まだまだ未熟者ですので、しっかりと勉強していこうって思ってます。

設計の勉強が落ち着いたら、スプラッシュさんが運営しているマスタークラスを受講します。

やっぱり、自分のスキルや市場における自分の価値を高めようって思うと、大きなコミュニティに所属したり、外の世界にでるってのが良いと思う。

小さなコミュニティのなかで比較した場合、めちゃくちゃ知識や経験があったとしても、外にでれば、レジェンドと呼ばれるような人たちがいっぱいるので、確実に自分の未熟さに気づくことができる。

常に勉強する姿勢を忘れずに、学んでいきたいですね。

話をもどしまして、今回はFileMaker で 日付や時間 を使うときは タイムスタンプ を使おうということで、ちょろっと書いてみます。

タイムスタンプ使おう

すごく簡単な話なんですが、日付や時間を使う場合は、積極的に タイムスタンプ を使おうよーって言いたい。

というより、便利なんですよね。

分かりやすいから、ついつい、日付フィールドや時刻フィールドを使っちゃいますよね。

どこらへんが便利なのかってのを、簡単に書いてみます。

もちろん、全てのケースでタイムスタンプがいいってわけじゃないですが。

タイムスタンプのいいところ

ずばり 経過時間の取得が簡単なところ かなって思います。

たとえば、こんな感じですかね。

サンプルテーブルで見てみる

このようなテーブルがあるとします。

テーブル名:サンプルテーブル
フィールド名 タイプ オプション/コメント
開始日 日付
開始時 時刻
開始タイムスタンプ タイムスタンプ
終了日 日付
終了時 時刻
終了タイムスタンプ タイムスタンプ

経過時間を求める場合(簡単バージョン)

フィールドに、このようなデータが入力されている場合に、経過時間を求めるのは簡単ですよね。
(ここでは、日付が同じということで、日付は考慮しないことにします。ありえないですけど。)

サンプルフィールド値

経過時間を求める場合(簡単バージョン)
開始日 2015/04/05
開始時 12:00:00
終了日 2015/04/05
終了時 12:45:00

計算式

計算式
GetAsNumber ( サンプルテーブル::終了時 - サンプルテーブル::開始時 )
結果
2700

この計算式の結果は 2700(秒)になりますので 45分 になります。

ここまでは、問題ないと思います。

経過時間を求める場合(簡単じゃないバージョン)

では、もし、日付をまたいでいた場合はどのように計算しますか?

フィールドに、このようなデータが入力されている場合に、どうやって経過時間を求めましょうか。

サンプルフィールド値

経過時間を求める場合(簡単じゃないバージョン)
開始日 2015/04/05
開始時 23:00:00
開始タイムスタンプ 2015/04/05 23:00:00
終了日 2015/04/06
終了時 01:45:00
終了タイムスタンプ 2015/04/06 01:45:00

計算式

計算式
GetAsNumber ( サンプルテーブル::終了タイムスタンプ - サンプルテーブル::開始タイムスタンプ )
結果
9900

この計算式の結果は 9900(秒)になりますので 165分 になります。ということで 2時間45分 になります。

簡単じゃないバージョンだけど、タイムスタンプを使って、簡単に終わりました。

タイムスタンプから日付を取得する

タイムスタンプで時刻情報を管理していると、タイムスタンプの日付を取得したい時もあります。

サンプルフィールド値

タイムスタンプから日付を取得する
開始タイムスタンプ 2015/04/05 23:00:00

計算式

計算式
GetAsDate ( サンプルテーブル::開始タイムスタンプ )
結果
2015/04/05

タイムスタンプから時刻を取得する

タイムスタンプで時刻情報を管理していると、タイムスタンプの時刻を取得したい時もあります。

サンプルフィールド値

タイムスタンプから時刻を取得する
開始タイムスタンプ 2015/04/05 23:00:00

計算式

計算式
GetAsTime ( サンプルテーブル::開始タイムスタンプ )
結果
23:00

日付と時刻からタイムスタンプを生成する

タイムスタンプで時刻情報を管理していると、日付と時刻からタイムスタンプを生成したい時もあります。

サンプルフィールド値

日付と時刻からタイムスタンプを生成する
開始日 2015/04/05
開始時 23:00:00

計算式

計算式
Timestamp ( サンプルテーブル::開始日 ; サンプルテーブル::開始時 )
結果
2015/04/05 23:00:00

Get関数(取得関数)でタイムスタンプを取得する

Get関数では、こんな感じです。

計算式

計算式
Get ( タイムスタンプ )

サンプルファイル

今回はサンプルファイルをありませぬ。

関連リンク

【関連】第53回 「FileMakerで「日付」をダイナミックに極め

レポート:
商売柄、○月○日に単価改訂とか決算といった要素をFileMakerで扱うことは殆どない。だいたいが○○期限とか校了日、下版日といったインキ臭の漂う日付しか扱わないので、運悪く間違えても「ゴメン」で済んだり済まなかったりなのだが、それでも面倒に思える場面があったりする。その一方で、最近では日付の入力書式も結構融通が利くよう拡張されてきているようなので、基本的なところだけ押さえておけば結構いい線まで使えそうな気もする…
思わず脱線すると、日付に限らず要件確定の席ではくれぐれも常識的な範疇で発注者(社内でもね)にワキの甘さを見せてはならない。こちらの弱点を悟った相手は調子に乗るので気を付けよう。まずは自身のスキルにおいて基本部分に残った穴を塞ぐのだ。そうすれば、面倒なわがまま要望を「こ〜いうもんです。」と撃退できる可能性がグンと上がるのである。

▼日付を作るには
Date()、または前出のGetAsDate()が便利だ。
Month、Day、Year の要素をDate()の中で組み合わせて加算減算し、自由な日付を作成できる。
 ・13月 → 次の年の1月
 ・1日-1 → 前月の末日

▼こんなのもあるぞ
年度、前期後期、四半期
日付書式の設定だけで画面上はこのように表示されるが、持っているデータはみな日付のまま。

半期を求めるには
Ceiling(月 ; / 6) 月の値を6で割って繰り上げることで半期を得る。
四半期の場合は6ではなく3で割れば良い。

【関連】タイムスタンプフィールドについて

おわり

ふと思ったので、さらっと書いてみましたー。ただいま「ユースケース駆動開発実践ガイド」を勉強していきますので、誰かどっかで、設計についての勉強会とかして、色々とシェアしたいなって思います。興味があれば、お声かけください!

FileMakerを勉強したい人へ

FileMakerをしっかりと勉強するのであれば、オフィシャルの学習用テキストが一番確実です。

体系立てて習得できるので、断片的に勉強するよりも理解もしやすいはずです。

ということで FileMaker Training Series をやるべし!

FileMaker Training Series には基礎編応用編の2種類があります。

さらに FileMaker Training Series に近いのですが、もうひとつ別で FileMaker Drill Book というテキストがあります。

まずは、オフィシャルの学習用テキストを購入して、コツコツ勉強することが一番の近道だと思います。

少しでもお役に立てたことがあれば シェアしていただけると嬉しいです

via PressSync

FileMakerの開発を主なる仕事にしてます。 FileMakerのBasicなことやAdvancedなことをメインに記事を書いてますが、FileMakerに関係ないこともバシバシ書いていきます。 現在は Java 勉強中ですので、勉強会などにも参加していきます。 コメント頂けると嬉しいです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください