初心者がタイムスタンプについて勉強したことをまとめました
FileMakerでフィールドの設定をしている時に見る「タイムスタンプ」型。
うっすらイメージはできますが、「日付」型や「時刻」型との違いは何?どういう用途で使うの?など知らないことが多かったので「群馬 FileMaker 勉強会 #5」を機会に勉強しました。
日付型や時刻型で頑張っていた機能をタイムスタンプでスマートに実現できるかもしれませんよ!
タイムスタンプフィールド
- 暦の特定の日時を参照することができる日付と時刻
- 必ず日付と時刻が含まれる
- タイムスタンプに対する計算処理では、時刻フィールドに対する計算と同様に秒単位で計算される
といった特徴があります。日付と時刻が含まれた秒単位のフィールドというのがポイントです。
タイムスタンプの書式設定
タイムスタンプの書式設定は、3つの構成要素を個別に設定することによって行います。
- 日付 -[インスペクタ]の[日付]領域 (例:15/11/26 2025年11月26日)
- 時刻 -[インスペクタ]の[時刻]領域 (例:15:35:39 午後3時25分)
- 秒 -[インスペクタ]の[数字]領域 (小数点以下の桁数を設定することができます)
関数のTimestamp
Timestamp関数は西暦上の日付と時刻が含まれるタイムスタンプを返します。
引数
- 日付-西暦上の日付または日付フィールド
- 時刻-時刻の値または時刻フィールド
戻り値のデータタイプ
- タイムスタンプ
Timestamp関数の使用例
「Timestamp(Date(26;11;2015);Time(9;19;45))」は「2015/11/26 9:19:45 AM」を返します。
タイムスタンプから日付や時刻を取得
タイムスタンプフィールドから日付を取得するときは「GetAsDate」、時刻を取得するときは「GetAsTime」を使います。
タイムスタンプから取得する方法
「日時[タイムスタンプ型]」フィールドの日付、時刻をそれぞれ取得する場合は
- 日付-「GetAsDate(日時)」で「日時」フィールドの日付を返します
- 時刻-「GetAsTime(日時)」で「日時」フィールドの時刻を返します
タイムスタンプのメリット
タイムスタンプフィールドは、日をまたいだ時間の計算が楽であるというメリットがあります。
例えば、「日時A」と「日時B」の間の時間を計算するとします。
日付フィールドを時刻フィールドを使うとなると、
「日付A-日付B」と「時刻A-時刻B」を計算することになります。
しかし、「日時A」と「日時B」が日をまたいでいる場合、時刻の計算をそのまますると、正しい時間を求めることができません。
そこで、タイムスタンプフィールドを活用すると、
「タイムスタンプA-タイムスタンプB」をそのまま計算することで、正しく時間を求めることができます。
これはタイムスタンプが、日付と時刻が含まれた秒単位のフィールドであるためそのまま計算することができるのです。
タイムスタンプフィールドの主な活用法
勉強会の時は、ここで発表が終わったのですが、その後の質疑応答でタイムスタンプの活用法を教わったので、まとめに追加します。
タイムスタンプフィールドには、このようなオプションがあります。
こちらの「作成情報」と「修正情報」にチェックを入れると以下のようなデータを自動的に入力します。
- 作成情報-レコードの作成日と作成時刻
- 修正情報-レコードの修正日と修正時刻
よって、タイムスタンプフィールドを2つ用意して、それぞれ「作成日時」と「修正日時」として設定すれば、レコードの作成日時や更新日時を管理することができます。