Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Die Oracle-SQL-Abfrage muss sich basierend auf der Zeitzone ändern

Habe die Antwort auf meine Frage gefunden.

Anscheinend müssen Sie auch die Zeitzoneneinstellungen berücksichtigen, wenn Sie den Epochenwert berechnen

  1. füge 10 Stunden (10*60*60*1000 Millisekunden) zum Epochenwert hinzu - der aktuelle Wert der Epoche ist in GMT, also habe ich dies hinzugefügt, um EST (GMT+10) zu machen.
  2. TO_TIMESTAMP_TZ statt to_date verwendet

    SELECT tableA.columnA,tableB.columnB 
    FROM tableA INNER JOIN tableB ON  tableA.aId = tableB.aId 
    WHERE (TO_TIMESTAMP_TZ('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss TZH:TZM') +    ((tableB.epochValue+(10*60*60*1000))/60/60/24/1000)) >  to_date('##FROM_DATE## +10:00', 'yyyy-MM-dd hh24:mi:ss TZH:TZM') 
    AND (TO_TIMESTAMP_TZ('1970-01-01 00:00:00 +10:00','yyyy-MM-dd hh24:mi:ss TZH:TZM') + ((tableB.epochValue+(10*60*60*1000))/60/60/24/1000)) <= to_date('##TO_DATE## +10:00', 'yyyy-MM-dd hh24:mi:ss TZH:TZM');