Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL Дата и час, закръглено до най-близкия час

Актуализация:Мисля, че https://stackoverflow.com/a/21330407/480943 е по-добър отговор.

Можете да го направите с някаква аритметика за дата:

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

Обяснения:

  • DATE_FORMAT :DATE_FORMAT(the_date, "%Y-%m-%d %H:00:00") връща датата, съкратена до най-близкия час (настройва минутата и секундата на нула).

  • MINUTE :MINUTE(the_date) получава минутната стойност на датата.

  • IF :Това е условно; ако стойността в параметър 1 е вярна, тогава той връща параметър 2, в противен случай връща параметър 3. Така че IF(MINUTE(the_date) < 30, 0, 1) означава "Ако минутната стойност е по-малка от 30, върнете 0, в противен случай върнете 1". Това е, което ще използваме, за да закръглим – това е броят на часовете, които трябва да добавим.

  • DATE_ADD :Това добавя броя на часовете за рунда към резултата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Продължете актуализацията с асоцииране

  2. Как да се свържете с MySQL източник на данни във Visual Studio

  3. Синтаксис на SQL ALTER TABLE – Изброен от СУБД

  4. Опитвам проста заявка с в параметър с mysql 5.5 до jdbc код

  5. mysql получава last_insert_id() в тригер