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

porovnat datum v příkazu sql

Ne. Datum/Časová razítka nemá žádný formát . Oracle neukládá datum/časová razítka ve formátu, který vidíte. Formát, který vidíte, je pouze pro zobrazení účel. Datum je interně uloženo v 7 bajtech, což je proprietární formát společnosti Oracle .

Samozřejmě, že mohl. Můžete použít TRUNC který zkrátí časovou část a ponechá pouze datovou část a datový typ zůstane jako datum.

Například,

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Vstup uživatele tedy získáte v tomto formátu jako řetězec . Nejprve musíte převést do DATE pomocí TO_DATE a pak to porovnejte.

Například,

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Jak jsem již řekl, pokud chcete ignorovat časovou část, použijte TRUNC .

Nicméně použití TRUNC v datovém sloupci potlačí jakýkoli běžný index na tom sloupci. Z hlediska výkonu je lepší použít podmínku časového období .

Například,

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1


  1. Jaký je nejlepší způsob, jak uložit bibli v SQL?

  2. Řazení podle více než jednoho sloupce pomocí mysql

  3. Oracle:získat maximální hodnotu skupiny?

  4. najít názvy sloupců a názvy tabulek odkazované v SQL