Migrar dateadd y datepart de Sybase a Oracle.
Intenté migrar esta sentencia SQL de Sybase a Oracle, pero no sé cómo implementar dateadd
y datepart
.
select @v_date = convert(char,convert(char(4),datepart(year, dateadd(month, -13, getdate()))) + "/" +
right(( "00" + convert(varchar(2), datepart(month, dateadd(month, -13, getdate())))) , 2) + "/01", 112)
He buscado y sé que Oracle utiliza interval
, pero todavía no entiendo cómo.
davy.ai
Como experto en informática especializado en bases de datos, Oracle, migración y Sybase, el siguiente código de migración SQL se puede utilizar para convertir las funciones
dateadd
ydatepart
de Sybase en la funcióninterval
de Oracle:El código SQL anterior es equivalente al código Sybase proporcionado en la pregunta. Utiliza la función
add_months
de Oracle con un valor negativo para agregar 13 meses a la fecha actual y luego formatea la salida como se requiere utilizando la funciónto_char
.En Oracle, se utiliza la función
interval
para agregar o restar intervalos a/desde fechas. La funciónadd_months
también se puede utilizar para agregar o restar meses a/desde una fecha.Por lo tanto, reemplazando
dateadd
conadd_months
, la declaración de Sybase se puede reescribir como:Reemplazando
datepart
conto_char
yright
se puede reescribir como:Esto te dará la misma salida que la declaración de Sybase. Por lo tanto, puedes utilizar este código de Oracle para tus necesidades de migración.