Oracle
 sql >> Base de données >  >> RDS >> Oracle

La requête Oracle SQL doit changer en fonction du fuseau horaire

J'ai trouvé la réponse à ma question.

apparemment, vous devez également tenir compte des paramètres de fuseau horaire lorsque vous calculez la valeur de l'époque

  1. ajoutez 10 heures (10*60*60*1000 millisecondes) à la valeur de l'époque - la valeur actuelle de l'époque est en GMT donc pour la rendre EST (GMT+10), j'ai ajouté ceci.
  2. Utilisé TO_TIMESTAMP_TZ au lieu de to_date

    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');