sql >> Databasteknik >  >> RDS >> Mysql

MYSQL Datum Tid Runda till Närmaste timme

Uppdatering:Jag tror att https://stackoverflow.com/a/21330407/480943 är ett bättre svar.

Du kan göra det med lite datumaritmetik:

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

Förklaringar:

  • DATE_FORMAT :DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00") returnerar datumet avkortat till närmaste timme (ställer in minut- och sekunddelarna till noll).

  • MINUT :MINUTE(the_date) får datumets minutvärde.

  • IF :Detta är en villkorlig; om värdet i parameter 1 är sant returnerar det parameter 2, annars returnerar det parameter 3. Så IF(MINUTE(the_date) < 30, 0, 1) betyder "Om minutvärdet är mindre än 30, returnera 0, annars returnera 1". Det här är vad vi ska använda för att avrunda -- det är antalet timmar att lägga till igen.

  • DATE_ADD :Detta lägger till antalet timmar för omgången i resultatet.



  1. Fel:Metoden eller operationen är inte implementerad. samtidigt som byggnadsställningar MYSQL-databasen

  2. beräkna skillnaderna mellan två rader i SQL

  3. hur väljer man max för blandad sträng/int kolumn?

  4. MySQL Duplicera rader