• 締切済み

DATE型の省略値について

環境:Oracle9i 9.2.0 言語:VB6 日付型の項目に秒まで設定しているデータがあります。 そのデータがたまたま0時ぴったりに登録されました。 「2006/04/06 00:00:00」の状態で登録されましたが、その後VBアプリから上記項目を取得しようとすると「2006/04/06」のみで取得されてしまいます。 ある人に確認すると内部的に省略されてるからだということです。 VBアプリからの取得時に「2006/04/06 00:00:00」で取得するようにできますでしょうか? 上記問題はデータをCSVでバックアップする為の目的で発生しており、CSV出力機能はVB6で作成しています。 内容はユーザ所有テーブル名称を全て読込み、その中でSQL文を作成し実行しています。その為、TO_CHAR関数などをSQLに明示的に設定はできればしたくないです。 Oracleの設定などで省略しないように変更ができる方法などありませんでしょうか? どなたかアドバイスお願い致します。

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > Oracleの設定などで・・・ Alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS' を実行SQL 文を 実行してみて下さい。

  • ketamuyo
  • ベストアンサー率50% (1/2)
回答No.1

OracleというよりVB6の仕様です。 DATE型変数は日付のみの場合に時刻を00:00:00として登録するため、時刻が00:00:00のときは日付のみを返します。 CSVに変数の内容を出力する際にFormat関数などを用いて定型書式で出力させるのがよいと思います。

toshi_200578
質問者

補足

回答ありがとうございます。 Oracleの仕様でもあるような気がします。 ツール等(Object Browserなど)でデータを参照しても時刻が表示されないです。 試しにデータを時刻を00:00:00として更新した後に参照しても表示されませんでした。 やはり時刻を省略しないで00:00:00として表示する設定はなさそうですかね。

関連するQ&A