2024年4月25日

データベースにデータが追加された際に、登録した時刻データを付加する

データ収集をおこなうにあたり、収集したデータの保存時刻は必要不可欠です。
データ収集アプリケーションを自身で開発する場合は、Insertをおこなう際に、
時刻データを一緒に登録すればいいのですが、ソースコード上に、
取得した日時をフォーマットを指定して、変数に追加する手続きが発生し、
デバッグの工数も発生します。(一度、作ってしまえば、いいだけですけど・・・)

また、ソースコードを変更できない場合は、この方法も使うことができません。

このような場合(があるか分かりませんが)、
SQL Serverでは、データ登録時の日時をレコードに付加することができます。
データベースのデザインで、日時を登録する列(フィールド)を用意し、
その「列のプロパティ」に日時を取得する関数を関連付け(バインド)します。

 

 

以下、設定方法です。

1.設定を追加するテーブルを右クリックし、「デザイン」を選択します。

 

2.時刻を追加するフィールドのデータ型を「datetime」を指定し、
「列のプロパティ」の「規定値またはバインド」に時刻取得関数を設定します。

「規定値またはバインド」に設定できる関数は、以下の通りです。

SQL Serverのシステムの日時を取得する場合は、
1) GETDATE()
2) SYSDATETIME()
3) CURRENT_TIMESTAMP()
を使用します。

 

UTCの日時を取得する場合は、
1) GETUTCDATE()
2) SYSUTCDATETIME()
を使用します。

※ちなみに、UTCタイムとは、世界各地の現在時刻を決定する
標準時刻となる「協定世界時」(Coordinated Universal Time)です。
日本の時刻は、UTCタイムに+9時間した時刻です。

 
 

 

 

また、「システム日時」、「UTC日時」共に、GET*とSYS*の関数が用意されていますが、
違いとしては、GET*に比べて、SYS*の方が、精度が高い様です。

詳細については、Microsfot社のページを参照して下さい。
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/getdate-transact-sql?view=sql-server-2017

 
 

 

上記設定をおこなうことで、レコード追加した際に、登録日時が付加されます。

日時の精度については、データ取得した時刻とするのか、テーブル登録された時刻とするのか
によっても、考え方が異なると思います。
そのような場合には、この様な手法は使えないかもしれませんが、
ある程度の目安時刻という意味では使用できるのではないでしょうか。