- PR -

DBの更新日時が正しく取得できない

1
投稿者投稿内容
牙鳥
会議室デビュー日: 2008/04/15
投稿数: 3
投稿日時: 2008-04-15 14:28
DBのデータを参照・更新するアプリを開発しています。

[開発環境]
OS:WindowsXP Pro SP2
IDE:Visual Studio 2005 SP1
DB:PostgreSQL 8.2

ネイティブコードで書かれたC++のdllをC++/CLIでラッパー処理して、
C#で書いたGUIで読み込んで使用しています。
C#のアプリでDBのデータを参照すると、integer型、text型のコラムは正確に参照できるのですが、timestamp型の更新日時を記述したコラムだけが取得した日(例:2008/04/15 00:00:00)になってしまい、DBのデータを参照することができません。

DB管理アプリ(pgadmin)で確認すると、更新日時が正確に保存されています。
この現象は開発環境ではなく、別のPCからネットワーク経由で参照した場合に起こっています(DBがインストールしてあるPCでlocalhost参照した場合は起こりません)。
またC#のアプリからDBのコラムを更新すると、きちんと内容は更新されています。

以前はこのようなことが起こらなかったので、VS2005か.NET Frameworkのアップデートが原因ではないかと思います。クライアント側のPCに、具体的にどのファイルをインストールすれば良いかわかりません。
ネットワーク経由でアクセスするPCには.NET Framework2.0、C++ 2005 Redistributableをインストール済みです。

どなたかこの解決策をご存知ないでしょうか?

よろしくお願いいたします。
牙鳥
会議室デビュー日: 2008/04/15
投稿数: 3
投稿日時: 2008-04-15 14:37
追記です。
使用しているdllはDBにアクセスして、DBのデータを参照・更新するためのものです。

[ メッセージ編集済み 編集者: 牙鳥 編集日時 2008-04-15 14:37 ]
YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2008-04-15 15:25
引用:

牙鳥さんの書き込み (2008-04-15 14:28) より:
C#のアプリでDBのデータを参照すると、integer型、text型のコラムは正確に参照できるのですが、timestamp型の更新日時を記述したコラムだけが取得した日(例:2008/04/15 00:00:00)になってしまい、DBのデータを参照することができません。



timestamp型データからの取得SQLを以下のようにしたら如何ですか?

to_char(timpstamp型データカラム,'YYYY/MM/DD HI24:MI:SS')
牙鳥
会議室デビュー日: 2008/04/15
投稿数: 3
投稿日時: 2008-04-15 15:53
ご回答ありがとうございます。

DBへアクセスするネイティブdllは提供されたものなので、SQL文を変更することはできないんです。
dll内部では更新日時コラムはSYSTIME型となっており、ラッパー処理部はSYSTEMTIME→DateTime型へ変換(各年・月・日・時刻を変換処理)しています。

dllは何度か修正してもらっているのですが、更新日時の取得部は全く変更してないそうです。また全く同じアプリを使用しているにもかかわらず、開発環境では問題ないのにクライアント側PCで発生しているため、VSのアップデートによって設定が変わった・・・もしくは何か追加インストールする必要があるのでは?と思っているのですが。。
1

スキルアップ/キャリアアップ(JOB@IT)