sql >> Base de Datos >  >> RDS >> Mysql

Fecha y hora de MYSQL Redondeo a la hora más cercana

Actualización:creo que https://stackoverflow.com/a/21330407/480943 es una mejor respuesta.

Puedes hacerlo con alguna aritmética de fechas:

SELECT some_columns,
    DATE_ADD(
        DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00"),
        INTERVAL IF(MINUTE(the_date) < 30, 0, 1) HOUR
    ) AS the_rounded_date
FROM your_table

Explicaciones:

  • DATE_FORMAT :DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00") devuelve la fecha truncada a la hora más cercana (establece las partes de minutos y segundos en cero).

  • MINUTO :MINUTE(the_date) obtiene el valor de los minutos de la fecha.

  • SI :Este es un condicional; si el valor del parámetro 1 es verdadero, devuelve el parámetro 2; de lo contrario, devuelve el parámetro 3. Entonces, IF(MINUTE(the_date) < 30, 0, 1) significa "Si el valor de los minutos es inferior a 30, devuelve 0; de lo contrario, devuelve 1". Esto es lo que vamos a usar para redondear:es la cantidad de horas para volver a agregar.

  • DATE_ADD :Esto suma el número de horas de la ronda al resultado.