对于10
条款,如果我有一个where
字符串,如何在%h:%i
之前使用该小时/分钟组合获得最后一个datetime
?
一些虚构的now()
来显示预期的行为(select
是我需要的神奇函数/组合子,它可以明确地依赖于comb
:
now()
答案 0 :(得分:2)
select concat(date(if(time(now()) > '20:20', now(), date_sub(now(), INTERVAL 1 day))), ' 20:20');
答案 1 :(得分:1)
这是一种到达那里的方法(如果函数被相应的函数替换,则以任何语言工作):
SELECT
CASE WHEN DATE_FORMAT(NOW(), '%H:%i') >= '20:20' THEN
STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y %d %e'), ' ', '20:20'), '%Y %d %e %H:%i')
ELSE
DATE_SUB(
STR_TO_DATE(CONCAT(DATE_FORMAT(NOW(), '%Y %d %e'), ' ', '20:20'), '%Y %d %e %H:%i'),
INTERVAL 1 DAY
)
END latest_valid_date
看起来我发现了一个mySQL错误......其他人正在返回null,虽然它不应该......如果你先减去这一天就行了......但是这仍然可行。