SQL - 接下来的半个小时

时间:2013-10-30 08:03:33

标签: mysql sql date

我希望能够通过以下方式创建时间: 例如,如果now()在09:00:00到09:29:00之间,那么新的时间将是09:30:00。 如果now()在09:30:00到09:59:00之间,那么新时间将是10:00:00。

知道怎么做?

2 个答案:

答案 0 :(得分:0)

来自How to round a DateTime in MySQL?

使用日期时间数据类型时,这有点令人讨厌;存储函数的一个很好的候选者。

DATE_SUB(DATE_SUB(time, INTERVAL MOD(MINUTE(time), 30) MINUTE), 
         INTERVAL SECOND(time) SECOND)

使用UNIXTIME时间戳时更容易,但这仅限于1970 - 2038日期范围。

FROM_UNIXTIME(UNIX_TIMESTAMP(time) - MOD(UNIX_TIMESTAMP(time), 1800))
祝你好运。

答案 1 :(得分:0)

以下查询可能会对您有所帮助

SELECT CASE WHEN DATE_FORMAT(current_timestamp(), '%i')  > 31 
                 and DATE_FORMAT(current_timestamp(), '%i')  < 59 
            WHEN 
                 CONCAT (DATE_FORMAT(current_timestamp(), '%H') + 1 , ':00:00' ) 
            ELSE CONCAT (DATE_FORMAT(current_timestamp(), '%H') , ':30:00' )  
            END;