Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

comparar data no comando sql


Não. Data/carimbos de data/hora não tem nenhum formato . O Oracle não armazena os carimbos de data/hora no formato que você vê. O formato que você vê é apenas para exibir propósito. A data é armazenada internamente em 7 bytes, que é o formato proprietário da Oracle .

Claro que você poderia. Você pode usar TRUNC que trunca a parte da hora e deixa apenas a parte da data e o tipo de dados permanece como data.

Por exemplo,
SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

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

Assim, você obtém a entrada do usuário nesse formato como uma string . Você precisa primeiro converter em DATE usando TO_DATE e depois compará-lo.

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

Como eu já disse, se você quiser ignorar a parte do tempo, aplique TRUNC .

No entanto, aplicar TRUNC na data coluna suprimiria qualquer índice regular nessa coluna. Do ponto de vista do desempenho, é melhor usar uma condição de período .

Por exemplo,
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