Duplicado de ¿Cuál es la MEJOR manera de eliminar la porción de tiempo de un valor de datetime (SQL Server)?

Tengo una columna en la que las pistas cuando las cosas se crean mediante un datetime, pero me gustaría generar un informe en el que grupos de ellos de día, así que necesito una manera de anular el componente de tiempo de una columna datetime.

¿Cómo puedo hacer esto?

8 Comentarios

  1. 18

    Es una manera de cambiar getdate() a su nombre de columna,

    select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
    • No creo que el +0 se requiere (al menos usando sql server 2012+). Este es el más creativo y útil respuesta que yo he visto.
  2. 30

    ¿Por qué no convertir directamente hasta la fecha:

    select convert(date, getdate())

    Este trunca días, no se rondas. A la ronda de los Días de hacer esto:

    select convert(date, getdate() + 0.5)
    • Fácilmente la mejor respuesta por su simplicidad y claridad.
    • No se si está utilizando sql server 2005
    • ¿Por qué no?
    • porque SQL Server 2005 no tiene la fecha tipo de datos
  3. 1

    convert(varchar, el campo de fecha/valor/etc, 101)

    Esta es la forma más sencilla para obtener la fecha de datetime.

  4. 0
    declare @CurrentDate datetime
    set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)

    –o–

    select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
    from tblX
  5. 0

    En mis búsquedas encontré la siguiente solución, que las tiras de tiempo de espera de la hora UTC sólo, pero me pareció interesante, así que pensé que alguien lo hiciera también:

    FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
    BEGIN
        RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME) 
    END

    Me gustaría suponer que se ejecuta rápidamente ya que todo lo que está haciendo es de redondeo y de fundición.

Dejar respuesta

Please enter your comment!
Please enter your name here