que tiene un campo de marca de tiempo y sólo quiero comparar la parte de la fecha de la misma en mi consulta en OracleOracle marca de tiempo en comparación con fecha
¿Cómo hago eso,
SELECT *
FROM Table1
WHERE date(field1) = '2012-01-01'
que tiene un campo de marca de tiempo y sólo quiero comparar la parte de la fecha de la misma en mi consulta en OracleOracle marca de tiempo en comparación con fecha
¿Cómo hago eso,
SELECT *
FROM Table1
WHERE date(field1) = '2012-01-01'
Puede truncate la fecha parte:
select * from table1 where trunc(field1) = to_date('2012-01-01', 'YYYY-MM-DD')
el problema con este enfoque es que los índices en field1
no sería utilizado por la llamada a la función.
alternativa (y más amigable índice)
select * from table1
where field1 >= to_timestamp('2012-01-01', 'YYYY-MM-DD')
and field1 < to_timestamp('2012-01-02', 'YYYY-MM-DD')
Puede limitar la fecha de
SELECT *
FROM Table1
WHERE trunc(field1) = to_Date('2012-01-01','YYY-MM-DD')
Mira el SQL Fiddle para más ejemplos.
to_date
formato trabajado para mí. Tenga en cuenta los formatos de fecha: MON-
, MM
, .
, -
.
t.start_date >= to_date('14.11.2016 04:01:39', 'DD.MM.YYYY HH24:MI:SS')
t.start_date <=to_date('14.11.2016 04:10:07', 'DD.MM.YYYY HH24:MI:SS')
Debe ** no ** confiar en la conversión de datos implícitos. ''2012-01-01'' no es una fecha, es un carácter literal. Siempre debe usar 'to_date()' o un ANSI DATE literal para asegurarse de que su SQL no se rompa cuando la configuración de NLS sea diferente. –