none
Cambiar hora en un campo de fecha+hora RRS feed

  • Pregunta

  • tengo una tabla donde tengo un campo que me muestra la fecha de la siguiente manera

    2018-01-31 00:00:00.000

    pero dentro del campo tengo valores como

    2018-03-31 11:05:35.000

    necesito modificar todos los que tienen hora, y manteniendo la fecha dejarlos en 00:00:00.0000, o sea que quede

    2018-03-31 00:00:00.0000

    gracias por su ayuda

    jueves, 17 de enero de 2019 14:48

Respuestas

  • necesito modificar todos los que tienen hora, y manteniendo la fecha dejarlos en 00:00:00.0000

    Como Alberto mencionó en respuesta anterior, si la versión de SQL Server es 2008 (o más reciente), una forma es:

    -- código #1
    UPDATE tabla
      set columna_fecha= cast (cast (columna_fecha as date) as datetime)
      where cast (columna_fecha as time) <> cast ('0:00' as time);

    La cláusula WHERE hace que sólo se actualicen los que tengan información de hora. El código se ha construido para evitar la conversión implícita.  

    Pero si la versión es anterior, he aquí otra forma:

    -- código #2
    UPDATE tabla
      set columna_fecha= dateadd (day, datediff (day, 0,  columna_fecha), 0)
      where columna_fecha <> dateadd (day, datediff (day, 0,  columna_fecha), 0);



    José Diz     Belo Horizonte, MG - Brasil     [Linked In]   [e-mail]   [Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    viernes, 18 de enero de 2019 13:13

Todas las respuestas

  • UPDATE laTabla SET elCampo = CONVERT(DATE, elCampo)

    Requiere un SQL Server lo bastante moderno para que tenga el tipo DATE.

    • Propuesto como respuesta Pedro Alfaro jueves, 17 de enero de 2019 17:18
    jueves, 17 de enero de 2019 14:54
  • necesito modificar todos los que tienen hora, y manteniendo la fecha dejarlos en 00:00:00.0000

    Como Alberto mencionó en respuesta anterior, si la versión de SQL Server es 2008 (o más reciente), una forma es:

    -- código #1
    UPDATE tabla
      set columna_fecha= cast (cast (columna_fecha as date) as datetime)
      where cast (columna_fecha as time) <> cast ('0:00' as time);

    La cláusula WHERE hace que sólo se actualicen los que tengan información de hora. El código se ha construido para evitar la conversión implícita.  

    Pero si la versión es anterior, he aquí otra forma:

    -- código #2
    UPDATE tabla
      set columna_fecha= dateadd (day, datediff (day, 0,  columna_fecha), 0)
      where columna_fecha <> dateadd (day, datediff (day, 0,  columna_fecha), 0);



    José Diz     Belo Horizonte, MG - Brasil     [Linked In]   [e-mail]   [Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    viernes, 18 de enero de 2019 13:13