0

私は Oracle 10g XE で作業しています。Oracle SQL Developer によって内部に 2 つのデータベースがあります。私はこのクエリを実行しています..

SELECT SCHEDULE_ID, START_DATE, END_DATE 
  FROM SCHEDULE
 WHERE C_ID IN (5781) 
   AND START_DATE >=TO_DATE ('1/29/2012','MM/DD/YYYY') 
   AND END_DATE <=TO_DATE ('4/14/2012','MM/DD/YYYY')

最初のデータベースでは、データが正しく返されました。2 番目のデータベースで同じクエリを実行していますが、値が返されません。しかし、データはテーブルで利用できます。

クエリを実行しました

SELECT dump(START_DATE), dump(END_DATE) FROM SCHEDULE WHERE C_ID=5026 

私は次のように結果を得ています、

DUMP(START_DATE ) -> Typ=12 Len=7: 100,112,2,7,1,1,1 
DUMP(END_DATE) -> Typ=12 Len=7: 100,112,2,13,1,1,1

重要なことは、クエリを変更しないでください..他のすべてのデータベースで機能するためです...

4

1 に答える 1

4

あなたの声明:

SELECT dump(START_DATE), dump(END_DATE) FROM SCHEDULE WHERE C_ID=5026

私は次のように結果を得ています、

DUMP(START_DATE ) -> Typ=12 Len=7: 100,112,2,7,1,1,1 and DUMP(END_DATE) -> Typ=12 Len=7: 100,112,2,13,1,1,1

私のコメント:

100,112,2,7,1,1,1

100,112,2,13,1,1,1

これは、YYYY-MM-DD になります。

Startdate    0012-02-07 00:00:00
Enddate      0012-02-13 00:00:00

つまり、あなたは約2000年ずれています。

日付データ型の形式は次のとおりです。

byte 1 - century (excess 100)  100 - 100 = 00
byte 2 - year (excess 100)  112 - 100 = 12
byte 3 - month = 2
byte 4 - day = 7
byte 5 - hour (excess 1) 1 - 1 = 0
byte 6 - minute (excess 1) 1 - 1 = 0
byte 7 - seconds (excess 1) 1 - 1 = 0
于 2012-04-24T14:28:59.623 に答える