sql >> Databáze >  >> RDS >> Mysql

MYSQL Datum Čas Zaokrouhlení na nejbližší hodinu

Aktualizace:Myslím, že https://stackoverflow.com/a/21330407/480943 je lepší odpověď.

Můžete to udělat pomocí nějaké aritmetiky data:

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

Vysvětlivky:

  • DATE_FORMAT :DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00") vrátí datum zkrácené na nejbližší hodinu (nastaví minuty a sekundy na nulu).

  • MINUTA :MINUTE(the_date) získá minutovou hodnotu data.

  • IF :Toto je podmíněné; pokud je hodnota v parametru 1 pravdivá, pak vrátí parametr 2, jinak vrátí parametr 3. Takže IF(MINUTE(the_date) < 30, 0, 1) znamená "Pokud je hodnota minut menší než 30, vraťte 0, jinak vraťte 1". To je to, co použijeme k zaokrouhlení - je to počet hodin, které se mají přidat.

  • DATE_ADD :Tím se do výsledku přidá počet hodin pro dané kolo.



  1. Dotaz MYSQL / data starší než 1 týden (všechna data a časy v UTC)

  2. Funkce MySQL CHAR() a výstup UTF8?

  3. Balíček SSIS nechce načíst metadata dočasné tabulky

  4. Přidání více parametrizovaných proměnných do databáze v c#