比如你想做一条SELECT语句查询从昨天下午6点到今天上午10点新增的值,会涉及到哪些函数?
一些背景:
我正在开发一个应用程序,人们可以在其中对夜总会的直播进行评分,所以一晚外出的时间跨度通常是从一天的下午 6 点到第二天的晚上 10 点。为了更清楚地想象你要出去,想知道“X”俱乐部或 field 今天是否合适。我正在制作的应用程序会记录俱乐部线路大小的投票,人们是否应该进入等等。因此,如果一个人投票认为你应该得到它(凌晨 0:46),其他人说22pm 的线路很大,这两个信息都应该出现。您只想知道从下午 6 点到第二天上午 10 点之间收到的“X”俱乐部的选票。您不想知道俱乐部“昨天”或上周的表现如何。你想知道这个地方今天的进展情况。很抱歉,如果我感到困惑,我想现在更清楚了。
那么,您如何处理从一天开始到另一天结束的时间间隔?
附言我开始认为使用
WHERE DATE(date_added) = CURDATE()
及其变体不是一个好方法,因为第二天会搞乱所涉及的逻辑。 (我的日期列是 date_added)
最佳答案
我假设您的 date_added 是时间戳或日期时间。
SELECT * FROM yourTable
WHERE date_added BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-%d 22:00:00')
AND DATE_FORMAT(CURDATE() + INTERVAL 1 DAY, '%Y-%m-%d 10:00:00')
编辑:
你的意思是这样的吗?
SELECT * FROM yourTable
WHERE date_added BETWEEN CASE WHEN TIME(NOW()) BETWEEN '22:00:00' AND '23:59:59' THEN DATE_FORMAT(CURDATE(), '%Y-%m-%d 22:00:00')
WHEN TIME(NOW()) BETWEEN '00:00:00' AND '10:00:00' THEN DATE_FORMAT(CURDATE() - INTERVAL 1 DAY, '%Y-%m-%d 22:00:00')
ELSE NULL
END
AND CASE WHEN TIME(NOW()) BETWEEN '22:00:00' AND '23:59:59' THEN DATE_FORMAT(CURDATE() + INTERVAL 1 DAY, '%Y-%m-%d 10:00:00')
WHEN TIME(NOW()) BETWEEN '00:00:00' AND '10:00:00' THEN DATE_FORMAT(CURDATE(), '%Y-%m-%d 10:00:00')
ELSE NULL
END
如果在时间范围内未触发查询,则结果为 NULL。
关于mysql - 在 mysql 中处理从一天开始到另一天结束的时间间隔的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366265/