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

DateTime in der Where-Klausel Oracle

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') wandelt einen String (erstes Argument) in einem bestimmten Format (zweites Argument) in ein Datum um.

(create_date / ( 60 * 60 * 24 )) create_date Sekunden enthält, wandelt dieser Ausdruck sie in die Anzahl der Tage um (1 Minute =60 Sekunden, 1 Stunde =60 Minuten, 1 Tag =24 Stunden => 60*60*24 =die Anzahl der Sekunden eines Tages). Wenn Sie eine Zahl zu einem Datum hinzufügen, denkt Oracle, dass diese Zahl Tage enthält, deshalb brauchen Sie eine solche Konversation.

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') + (create_date / ( 60 * 60 * 24 )) gibt Ihnen ein Datum, das in create_date gespeichert ist, aber im "traditionellen" Format

Es scheint, dass Sie die Unix-Zeit mit dem Datum vergleichen müssen. Es wäre besser, diese Bedingung zu verwenden:

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