none
Nombre de columna no válido RRS feed

  • Pregunta

  • hola 

    Estoy tratando de averiguar la diferencia en días entre la Fecha y la fecha de hoy...

    ¿Por qué este regreso "nombre de columna no válido" para Fecha? Fecha es un tipo de datos datetime

    DECLARE @diff as datetime
    SET @diff = (SELECT DATEDIFF(day,[Fecha],GETDATE()) as Dias)
    SELECT IdProyecto, IdPersona,Fecha,Comentario, @diff
    FROM dbo.Comentario

    miércoles, 26 de febrero de 2014 16:50

Respuestas

  • Presta atencion a esta sentencia de asignacion:

    SET @diff = (SELECT DATEDIFF(day,[Fecha],GETDATE()) as Dias)

    Que interpretacion le das al identificador [Fecha], porque no indicas de dondes lo estas seleccionando.

    Ahora fijate en la sgte sentencia:

    SELECT IdProyecto, IdPersona,Fecha,Comentario, DATEDIFF(day,[Fecha],GETDATE()) as Dias
    FROM dbo.Comentario;

    En este caso el identificador [Fecha] puede ser el nombre de alguna columna en la tabla [Comentario].

    Crees entender el error despues de esta explicacion?


    AMB

    Some guidelines for posting questions...


    miércoles, 26 de febrero de 2014 18:37
  • Hola.

    No es una cuestión de emplear "SET" o "SELECT", es que para obtener la diferencia entre el día de hoy y una fecha almacenada en un campo de una tabla debes emplear una consulta que referencie dicha tabla, y en tu ejemplo no lo haces.

    Tampoco tienes en cuenta que la diferencia en días entre dos fechas no es otra fecha, sino un número de días.

    Además, en tu sentencia falta un filtro para la tabla "dbo.Comentario", ya que si quieres guardar la diferencia de días (un valor discreto), tendrás que indicarle la diferencia en días con el valor del campo Fecha de un registro dado.

    En esa línea, tu sentencia creo que iría más o menos así:

    declare @diff int
    
    SELECT @diff = DATEDIFF(day, Fecha,GETDATE())
    FROM dbo.Comentario
    where IdProyecto = 1 and IdPersona = 5
    
    --Esto es para que se muestre el resultado
    select Diferencia_De_Dias = @diff

    Si tienes dudas, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 6 de marzo de 2014 5:00
    Moderador

Todas las respuestas

  • Esto: SET @diff = (SELECT DATEDIFF(day,[Fecha],GETDATE()) as Dias) te va a regresar un int no un datetime, le estas pidiendo que te de la diferencia en dias entre una fecha y la otra.

    Prueba:

    SELECT SQL_VARIANT_PROPERTY((SELECT DATEDIFF(day,[Fecha],GETDATE()) as Dias),'BaseType')

    Jesús A. Ramírez

    miércoles, 26 de febrero de 2014 18:30
  • Presta atencion a esta sentencia de asignacion:

    SET @diff = (SELECT DATEDIFF(day,[Fecha],GETDATE()) as Dias)

    Que interpretacion le das al identificador [Fecha], porque no indicas de dondes lo estas seleccionando.

    Ahora fijate en la sgte sentencia:

    SELECT IdProyecto, IdPersona,Fecha,Comentario, DATEDIFF(day,[Fecha],GETDATE()) as Dias
    FROM dbo.Comentario;

    En este caso el identificador [Fecha] puede ser el nombre de alguna columna en la tabla [Comentario].

    Crees entender el error despues de esta explicacion?


    AMB

    Some guidelines for posting questions...


    miércoles, 26 de febrero de 2014 18:37
  • Entonces en este caso ocupo SELECT para asignar mi valor...


    Viol3

    jueves, 27 de febrero de 2014 16:17
  • Hola.

    No es una cuestión de emplear "SET" o "SELECT", es que para obtener la diferencia entre el día de hoy y una fecha almacenada en un campo de una tabla debes emplear una consulta que referencie dicha tabla, y en tu ejemplo no lo haces.

    Tampoco tienes en cuenta que la diferencia en días entre dos fechas no es otra fecha, sino un número de días.

    Además, en tu sentencia falta un filtro para la tabla "dbo.Comentario", ya que si quieres guardar la diferencia de días (un valor discreto), tendrás que indicarle la diferencia en días con el valor del campo Fecha de un registro dado.

    En esa línea, tu sentencia creo que iría más o menos así:

    declare @diff int
    
    SELECT @diff = DATEDIFF(day, Fecha,GETDATE())
    FROM dbo.Comentario
    where IdProyecto = 1 and IdPersona = 5
    
    --Esto es para que se muestre el resultado
    select Diferencia_De_Dias = @diff

    Si tienes dudas, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 6 de marzo de 2014 5:00
    Moderador