sql >> Database >  >> RDS >> Oracle

DateTime op Where-clausule Oracle

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') converteert een string (eerste argument) in een bepaald formaat (tweede argument) naar een datum.

(create_date / ( 60 * 60 * 24 )) create_date seconden bevat, zet deze uitdrukking ze om in het aantal dagen (1 minuut =60 seconden, 1 uur =60 minuten, 1 dag =24 uur => 60*60*24 =het aantal seconden in een dag). Als je een getal toevoegt aan een datum, denkt Oracle dat dit getal dagen bevat, daarom heb je zo'n gesprek nodig.

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') + (create_date / ( 60 * 60 * 24 )) geeft u een datum opgeslagen in create_date maar in "traditioneel" formaat

Het lijkt erop dat je Unix-tijd met datum moet vergelijken. Het zou beter zijn om deze voorwaarde te gebruiken:

Select
....
From
...
Where create_date = trunc( (TO_DATE('06/30/14 21:41:11', 'MM/DD/YY HH24:MI:SS') 
                          - TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
                           ) * 24 * 60 * 60
                         );


  1. Rails met in het geheugen database

  2. MySQL Select JOIN 3 Tables

  3. Repliceer Base64-decodering van Java in PL/SQL

  4. Oracle krijgt rij waar kolomwaarde is gewijzigd