sql >> Databáze >  >> RDS >> Oracle

DateTime on Where Klauzule Oracle

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') převede řetězec (první argument) v určitém formátu (druhý argument) na datum.

(create_date / ( 60 * 60 * 24 )) create_date obsahuje sekundy, tento výraz je převede na počet dní (1 minuta =60 sekund, 1 hodina =60 minut, 1 den =24 hodin => 60*60*24 =počet sekund za den). Když k datu přidáte číslo, Oracle si myslí, že toto číslo obsahuje dny, proto takovou konverzaci potřebujete.

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') + (create_date / ( 60 * 60 * 24 )) vám dává datum uložené ve create_date, ale v "tradičním" formátu

Zdá se, že musíte porovnat unixový čas s datem. Bylo by lepší použít tuto podmínku:

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. Oracle SQL trigger při aktualizaci sloupce

  2. Aktualizace SQL pomocí row_number()

  3. Problém Oracle s hlášením SQL

  4. Vložit do z CTE