es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 y datepart de Sybase en la función interval de Oracle:

    select (to_char(add_months(sysdate, -13), 'YYYY/MM/DD')) v_date from dual;
    

    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ón to_char.

    En Oracle, se utiliza la función interval para agregar o restar intervalos a/desde fechas. La función add_months también se puede utilizar para agregar o restar meses a/desde una fecha.

    Por lo tanto, reemplazando dateadd con add_months, la declaración de Sybase se puede reescribir como:

    add_months(sysdate, -13)
    

    Reemplazando datepart con to_char y right se puede reescribir como:

    to_char(add_months(sysdate, -13), 'YYYY/MM/DD')
    

    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.

Comments are closed.