2012-04-24 15 views
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番目のデータベースで同じクエリを実行していますが、値を返しません。しかし、そのデータは表にあります。

私は

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 

、その結果を取得していますし、重要なことは、私はquery..Becauseにすべてでその作業を変更するべきではない、あるクエリ

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

を実行していました他のデータベース...

+4

日付の設定はこれに影響を与えないです。 _data_が同じであることは確かですか? – Ben

+0

はい。確かに確認しました。私はテーブル内のデータを持っています.. – RobinHood

+0

私はこのような ".... TO_DATE(START_DATE)> = TO_DATE('30年1月29日 '、' MM/DD/YYYY ')"の作業を試みました... ..しかし、適切な解決策ではありません。 – RobinHood

答えて

4

あなたの声明:

私はその結果を取得しています0
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-

これは

Startdate 0012-02-07 00:00:00 
Enddate  0012-02-13 00:00:00 
YYYY-MM-DDになります

あなたは約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 
+0

こんにちは、私はあなたの答えを理解することができません..親切に私が何をすべきか説明してください... – RobinHood

+0

ダンプ機能は、データベースの日付の内部表現が100,112,2,7,1,1,1であることを示しています。これは0012-02-07に対応します。その日にイエスは約12歳でした。スケジュールからto_char(startdate、 'YYYY-MM-DD')を選択します。あなたが見るでしょう。おそらくあなたのデータは「間違っています」、少なくともあなたが期待するものではありません。 –

+0

@RobinHood - 日付は2012年(2000年前)ではなく、12年目です。 SQL文が機​​能するようにするには、日付が正しいようにデータを変更する必要があります。たとえば、 'update schedule set start_date = add_months(start_date、12 * 2000)、end_date = add_months(end_date、12 * 2000)where c_id = 5026'は、年が正しいようにこれらの2つの行を更新します。しかし、年が間違っている行があるかもしれないので、 'update schedule set start_date = add_months(start_date、12 * 2000)のように何かしたいかもしれません。start_date