2017-02-22 6 views
0

レポートのバグを修正しようとしています。現時点で問題は立っている:Java、Oracle db - trunc(nvl)の後のタイムゾーンの問題がdatetimeオブジェクトのタイムスタンプを取り除く

PSTで2/22の午後9時45分に、誰かが作業命令を提出します。

私たちのOracleデータベースに当てられ、EST(データベースはESTにありますが、米国全土のクライアントと連携して動作します)に正規化します。 iReportはで

、我々は次のように使用している:

trunc(nvl(ls.date_occurred,ls.date_created)) between TRUNC($P{DATE_FROM}) AND TRUNC($P{DATE_TO})

をこれはDateTimeオブジェクトのオフタイムスタンプを取り除き、そのレポートが生成されるとき、それは時間を節約しない、ある日付のみ現在2/23(それぞれ午前12時25分)。

これは明らかに私たちの報告機能を無効にします。タイムゾーンの違いのために翌日に生成されたこの日付オフセットと、調整されたデータにタイムスタンプが関連付けられていないことを除いて、すべてのデータが正しいと思われます。 誰かが日付のタイムスタンプを取り除く関数を使わずにdatetimeのために調整する別の方法がありますか?

+1

なぜ、TRUNC()内で左辺をラップするのですか?あなたがする必要があるのは、それを捨てることだけです。 – mathguy

+0

あなたはTRUNC($ P {DATE_FROM})とTRUNC($ P {DATE_TO})の間の '(nvl(ls.date_occurred、ls.date_created)) 'を意味しますか? – OhMyGodAGirl

+0

はい。そして、あなたはnvl(...)のまわりの外側のかっこは必要ありません。それらはTRUNC関数から残されています。 – mathguy

答えて

0

はDATE_CREATEDではないのに対し、date_occurredがtruncedされているので、私は、NVL内DATE_CREATEDのタイムゾーンを調整する必要があることが判明します。これによりデータが失われます。

0

あなたのfrom/toの日付はESTにはないので、あなたのレポートに必要な日付とデータベースの日付との間に相違があります。正しい日付を切り捨てる場合は、リクエストのタイムゾーンに合わせてリクエストの日付/時刻を調整する必要があります(PSTタイムゾーンからリクエストする場合は、最初に日付をESTに変換してからクエリを作成します)

また、あなたが見ることができる:TIME ZONEデータ型とTIMESTAMP https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm

関連する問題