sql - registros - pivot oracle ejemplos
Pregunta simple de sintaxis de fecha SQL de Oracle (7)
Aquí hay un par de ejemplos para convertir desde y hacia fechas:
-
select to_date(''2008/11/18:12:00:00AM'', ''yyyy/mm/dd:hh:mi:ssam'') from dual
-
select to_char(sysdate, ''mm/dd/yyyy'') from dual
Estoy tratando de convertir una consulta de MS Access que funcione para ejecutarla en una base de datos Oracle a la que se accede a través de VB Script (.asp). Esta es la última sección de la cláusula WHERE:
sql = sql & "WHERE (UAT.HB.MB_MODE = ''A'' AND UAT.HB.PRINT_DATE >= ''"
& SD & "'' AND UAT.HB.PRINT_DATE <= ''" & ED &"'' )"
La variable "SD" (es decir, "fecha de inicio") es una cadena de texto que puede contener un valor como "11/11/2008". Lo mismo ocurre con la variable "ED" (es decir, "fecha de finalización").
Sin embargo, las fechas no funcionan. ¿Requiere Oracle una forma especial de usar las fechas?
¿Las fechas deben ser convertidas? ¿Los rodeo con la palabra clave ''#'' como lo harías en MS Access?
De acuerdo con esto , puede usar lo siguiente:
to_date(''19960725'',''YYYYMMDD'')
El formato de fecha predeterminado de Oracle puede cambiar de una base de datos a otra. Por lo tanto, si no conoce el formato de fecha que está utilizando su base de datos, entonces debe usar la función TO_DATE con una cadena de formato de fecha explícita. Dado el hecho de que el formato de fecha predeterminado podría cambiar en cualquier momento, usar una cadena de formato de fecha explícita es lo mejor que se puede hacer de todos modos.
ej .: TO_DATE (''11 / 11/2008 17:30 '','' MM / DD / AAAA HH24: MI '')
El formato de fecha predeterminado para Oracle es "dd-mon-yy". Puede hacer una función TO_CHAR en el campo de fecha para convertirla a un formato con el que prefiera coincidir.
No olvide que la fecha incluye una hora (por defecto es 00:00:00), entonces
no te dejes atrapar por algo como esto:
dadas tres fechas, start_date, print_date, end_date
, todo en el mismo día
print_date >= start_date AND print_date <= end_date
falla porque print_date
fue mayor que end_date
:
start_date
fue 2008-11-19 (00:00:00)
y end_date
fue 2008-11-19 (00:00:00)
y print_date
fue 2008-11-19 ( 16:00:00 )
No asuma que el formato de fecha predeterminado de Oracle es cualquier cosa. Verifique NLS_DATE_FORMAT o use TO_DATE para convertirlo. Me gusta esto:
TO_DATE(''2008-11-18 14:13:59'', ''YYYY-MM-DD HH24:Mi:SS'')
Tenga en cuenta la ''Mi'' para los minutos y no ''MM''. Eso atrapa a mucha gente.
En Oracle, su fecha debe escribirse como una fecha ANSI literal como esta:
DATE ''2008-11-11''
O convertido a una fecha de una cadena como esta:
TO_DATE(''11/11/2008'', ''MM/DD/YYYY'')
Mira aquí