<\/HEAD>
GIS管理者として、フィーチャクラスにたくさんのフィールドを追加するのは非常に簡単で、さらに人々がそれらを入力または編集するだろうと安易に考えるのはもっと簡単です!私にとってよくあるテーマは日付フィールドです。編集日、作成日、FGDC編集日と作成日、年…などなど。
<\/P>
編集者が日付について考えなければならない負担が一つだけ、あるいは全くなくて、データベースがそれをただ…処理してくれたらいいのにと思います。
<\/P>
これはデータベーストリガーで可能です。まずFGDCの日付から始めましょう。もしフィーチャレベルのメタデータの何らかの形を実装している場合や、FGDCソース、作成日または編集日で別のメタデータ要素にタグ付けするデータマイニングを行い、かつeditor trackingが有効になっているなら、FGDC[whatever]DATE列も入力しなければならない理由はありません。
<\/P>
CREATE TRIGGER [dbo].[SOMETABLE_DATE]
ON [dbo].[SOMETABLE]
AFTER INSERT, UPDATE NOT FOR REPLICATION
AS BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[SOMETABLE]
SET
SRCDATEFGDC = (convert(varchar(8), SOURCEDATE, 112)),
CREATEDATEFGDC = (convert(varchar(8), CREATEDATE, 112)),
EDITDATEFGDC = (convert(varchar(8), EDITDATE, 112))
END
GO<\/PRE><\/P>ここではEDITDATEとCREATE dateの値を取り、それらはsqldatetime(2)<\/PRE>であり、それらをyyyymmddという文字列形式に変換しています。112が出力形式を制御します。詳細な日付変換形式のリストについてはCAST and CONVERT (Transact-SQL)<\/A>をご覧ください。<\/P>
さらに、この場合ユーザーは作成日とは異なる可能性のあるソース日付も選択しており、それも変換されます。
<\/P>
もし年の列があれば次のようにもできます
<\/P>
YEAR = CASE WHEN SOURCEDATE IS NULL THEN NULL ELSE YEAR(SOURCEDATE) END<\/PRE><\/P>null値処理も含めて。<\/P>何らかの理由でeditor trackingが無効になっている場合(Collector for ArcGISで問題を引き起こすことが多い)、日付列に対してデフォルト制約としてgetdate()<\/PRE>を設定することもできます。<\/P>これは個人ブログであり、上記の方法を推奨、支持、または保証するものではありません。ESRIソフトウェアスタック外でSQLを使用してデータを変更することはサポートされておらず、生産データベースに適用する場合は十分な理解と災害復旧計画が必要です。<\/EM><\/BODY><\/HTML>