Verwenden von OPENQUERY mit einer Oracle-Datenbank zum Abfragen eines Datumsbereichs

Wir haben eine Oracle-Datenbank, auf die wir für einige Dinge über OpenQuery zugreifen. Offensichtlich können Sie mit dem OleDB-Treiber keine Datumsvergleiche direkt in OpenQuery durchführen. Um dies zu umgehen, müssen Sie die Daten in Julien-Daten konvertieren und diese Zahlen vergleichen. Ich habe die folgende Abfrage, die wir versuchen, dies in MS SQL Server auszuführen (GPROD ist ein Verbindungsserver über den OleDb-Treiber):

SELECT *
FROM  OPENQUERY(GPROD, '
     SELECT * 
     FROM ORD_HDR_HST 
     WHERE (cast(to_number(to_char(SHIP_DATE ,''J'')) as numeric(10,0))  >= cast(to_number(to_char(to_date(''01-JAN-2015'') ,''J'')) as numeric(10,0))  AND 
            cast(to_number(to_char(SHIP_DATE ,''J'')) as numeric(10,0))  <= cast(to_number(to_char(to_date(''21-SEP-2015'') ,''J'')) as numeric(10,0)) )')

Diese Abfrage gibt keine Ergebnisse zurück, erzeugt aber auch keinen Fehler.

Wenn ich diese Abfrage in Oracle SQL Developer ausführe, funktioniert sie einwandfrei und gibt Tausende von Zeilen zurück:

SELECT * 
FROM ORD_HDR_HST 
WHERE (cast(to_number(to_char(SHIP_DATE ,'J')) as numeric(10,0))  >= cast(to_number(to_char(to_date('01-JAN-2015') ,'J')) as numeric(10,0))  AND 
       cast(to_number(to_char(SHIP_DATE ,'J')) as numeric(10,0))  <= cast(to_number(to_char(to_date('21-SEP-2015') ,'J')) as numeric(10,0)) )

DasSHIP_DATEas @ -Feld ist vom Typ DATE und kann bei Bedarf auf Null gesetzt werden.

Weiß jemand, was ich tun kann, um dies über OpenQuery zum Laufen zu bringen?

Bearbeiten

Ich habe die Julien Date-Konvertierung getestet und es ist definitiv etwas faul im Gange, aber ich weiß nicht, woran es liegt. Wenn ich dies in Oracle ausführe:

select cast(to_number(to_char(to_date('01-JAN-2015') ,'J')) as numeric(10,0)) from dual

Ich bekomme 2457024

Wenn ich das auf SQL Server ausführe:

select * from OPENQUERY(GPROD, 'select cast(to_number(to_char(to_date(''01-JAN-2015'') ,''J'')) as numeric(10,0)) from dual')

Ich bekomme 1721443

Antworten auf die Frage(2)

Ihre Antwort auf die Frage