gpt4 book ai didi

mysql - 在 mysql 中处理从一天开始到另一天结束的时间间隔的好方法是什么?

转载 作者:行者123 更新时间:2023-11-29 06:48:09 25 4
gpt4 key购买 nike

比如你想做一条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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com