業務アプリでは、マスターに限らす、データべースのテーブルには、登録日や更新日の項目を設ける事が一般的です。
mSec単位まで保持可能にするのが普通で、楽観的排他の項目として使うこともあります。
SQL Serverならば、TimeStampで排他制御すれば楽なのですが、他のRDBでは該当項目がありません。
OracleのTimeStampは別ものです。RDB仕様として、下6から9ケタまで指定可能のように書かれてますが、OSの制約で、mSecまでしか格納できないようです。ということは、SqlSeverのDateTimeと違いは少ないです。
Timestampという言葉は、紛らわしいので困ります。Oracle文化圏の仕事をするとき嫌疑眼で見られますねぇ。
DB上の更新日は、DBサーバー上の時刻で、実際にDBにUPDATEされた時刻を格納したいので、 set x = sysdate() などとするか、Default値として< sysdate()をセットします。
帳票に作成日時を印刷することもありますが、DBの整合性を考えて、印刷データを抽出した日時を印刷するものです。
しかし、設計者の心、子知らずなのか、PGさんは、クライアント日付を格納したり、印刷ルーチンが走る時点のクライアント日時を出力したりしてくれます。
更新日時なのに、YYYYMMDDの日単位しか格納しなかったりして、排他制御の役に立たなかったりします。
「プログラム仕様書に明記しないのが悪い」と言えばそうなのですが、共通仕様書には明記してます。それを個々に展開する時に、忘れるようですね。
業務仕様でなく、プログラムの基礎仕様なので、書いてなくても、どうすれはようのかは感じて欲しいものです。
オフショアの場合は、これは言ってはイケない事だそうです。このレベルよりも細かなレベルの仕様書を書いていると、「自作したほうが早い」衝動に駆られます。
サーバー日付とクライアント日時は一致保障はないとか、データの日時の同一性などの知識は、「開発者たるもの持っているべきだ」とするのは高望みなんだろうか。