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.

La conversión de un tipo de dato varchar a datetime genera un error fuera del rango.

Tengo que modificar una columna de mi vista, es de tipo nvarchar, la necesito como datetime.

Así es como se creó en la vista:

ISNULL(FORMAT(input, 'dd/MM/yyyy HH:mm:ss'), '') MyDate

Estoy tratando de convertirlo a datetime:

CONVERT(datetime, ISNULL(FORMAT(input, 'yyyy/MM/dd HH:mm:ss'), ''), 126) MyDate

Pero esto arroja un error:

Msg 241, Level 16, State 1, Line 2
La conversión del tipo de datos nvarchar en datetime produjo un valor fuera de intervalo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar la columna de la vista de nvarchar a datetime, necesitas actualizar la definición de la vista. Puedes hacer esto modificando la vista y cambiando el tipo de datos de la columna. Sin embargo, tu intento de convertir la columna usando la función CONVERT() no está funcionando porque la columna de entrada (input) no es de tipo datetime.

    Prueba los siguientes pasos:

    1. Agrega una nueva columna a la vista con el tipo de datos datetime:
    ALTER VIEW myView
    AS
        SELECT CONVERT(datetime, ISNULL(FORMAT(input, 'yyyy/MM/dd HH:mm:ss'), ''), 126) AS MyDate,
               -- otras columnas
        FROM myTable;
    
    1. Elimina la antigua columna de la vista:
    ALTER VIEW myView
    AS
        SELECT CONVERT(datetime, ISNULL(FORMAT(input, 'yyyy/MM/dd HH:mm:ss'), ''), 126) AS MyDate,
               -- otras columnas
        FROM myTable;
    
    1. Cambia el nombre de la nueva columna al nombre original de la columna:
    EXEC sp_rename 'myView.MyDate', 'MyDate', 'COLUMN';
    

    Esto actualizará la vista para que tenga la columna MyDate como tipo datetime. Ten en cuenta que esto asume que la columna de entrada está en el formato 'yyyy/MM/dd HH:mm:ss'. Es posible que necesites ajustar la cadena de formato para que coincida con el formato real de los datos de entrada.

Comments are closed.