基本的东西,我有一个简单的SQL查询我正在尝试运行,但它不起作用。我发现的问题是:
hour(NOW()) >= start_hour
原始代码是这样的:
SELECT * FROM shows WHERE hour(NOW()) >= start_hour
AND hour(NOW()) < end_hour AND WEEKDAY(NOW()) = day
一些示例数据
ID --- NAME -------- SHOW -------------- IMAGE-- DAY-Start_time - END_TIME
1 - Shea Lavington - 早间秀! - Chris.png - 0 - 06:00:00 - 10:00:00
ID int
presenter text
show text
image text
day decimal
start_hour time
end_hour time
答案 0 :(得分:1)
问题不是白天。问题是start_hour。但我不确定为什么,但是天是数字,开始/结束时间是“时间”
简单!这意味着您要将6
与06:00:00
进行比较。只需将HOUR应用于两侧而不仅仅是一侧,因此您可以在两侧获得一个数字进行比较。
hour(NOW()) >= HOUR(start_hour)
喜欢这个
SELECT * FROM shows
WHERE WEEKDAY(NOW()) = day
AND HOUR(NOW()) BETWEEN HOUR(start_hour) AND HOUR(end_hour)
也可以摆脱所有这些HOUR
的东西
SELECT * FROM shows
WHERE WEEKDAY(NOW()) = day
AND NOW() BETWEEN start_hour AND end_hour
答案 1 :(得分:0)
你需要的不是Now()for hour尝试CURTIME()for hour()和CURDATE()for weekday()所以这样做:
SELECT *
FROM shows
WHERE hour(CURTIME()) >= hour(start_hour)
AND hour(CURTIME()) < hour(end_hour)
AND WEEKDAY(CURDATE()) = day