我想查询一个mySQL表以提取两次和两次之间的数据。我知道如何使用“ between”调用对单个“ datetime”列执行此操作,但是我的列是一个“ date”列和一个“ time”列。我在网上可以找到的所有解决方案都是针对单个datetime列的。
我的范围从15:30的“ day1”到15:14的day1 + 1day
到目前为止,我可以获得以下范围(有效):
SELECT time, close FROM intraday_values WHERE date="2005-03-01" and time between "15:30" and "23:59"
但是我显然需要合并两个日期和两次。我尝试了以下操作,但收到错误消息:
SELECT time, close FROM intraday_values between date="2005-03-01" and time="15:30" and date="2005-03-02" and time = "15:14"
有人可以帮助我正确地制定查询吗?非常感谢
不知道您的日期字段是否已编入索引。如果它们是其他人给出的“ concat”示例,则可能效果不佳。
或者,您可以使用以下形式的查询:
select * from foo where (date > lower_date and date < upper_date) -- technically this clause isn't needed if they are a day apart or (date = lower_date and time >= lower_time) or (date = upper_date and time <= upper_time)
它不是很漂亮,但是可以工作,并且允许mysql利用date字段上的索引(如果存在的话)。
所以你的查询是
SELECT time, close FROM intraday_values where (date > "2005-03-01" and date < "2005-03-02") or (date = "2005-03-01" and time >= "15:30") or (date = "2005-03-02" and time <= "15:14")