我的前端有日期选择器,用户可以选择日期和符号并获得其历史价格
从选定日期开始,我将提取下一个30天的记录,这是我的查询
(假设用户已选择2015年12月1日)
SELECT *
FROM historical_data
WHERE current_day BETWEEN DATE_ADD('2015-12-01', INTERVAL 30 DAY) AND '2015-12-30'
AND symbol_name = 'YESBANK'
http://sqlfiddle.com/#!9/3693b/9
你能否告诉我为什么没有记录
答案 0 :(得分:3)
DATE_ADD('2015-12-01',INTERVAL 30 DAY)将返回2015-12-31
您当前的查询始终返回 false 。
SELECT *
FROM historical_data
WHERE current_day BETWEEN '2015-12-31' AND '2015-12-30'
AND symbol_name = 'YESBANK'
答案 1 :(得分:1)
你的情况总是错误的:
WHERE current_day BETWEEN DATE_ADD('2015-12-01', INTERVAL 30 DAY) AND '2015-12-30'
<=>
-- WHERE current_day BETWEEN '2015-12-31' AND '2015-12-30'
的 SqlFiddleDemo
强>
使用正确的日期范围,其中包括开始日期&lt; =结束日期:
WHERE current_day '2015-12-01' AND '2015-12-30'
或:
WHERE current_day BETWEEN DATE_ADD('2015-12-30', INTERVAL -29 DAY) AND '2015-12-30'
答案 2 :(得分:1)
如果你在两者之间使用,你只会给出开始和结束日期,如:
SELECT *
FROM historical_data
WHERE current_day
BETWEEN '2015-12-01' AND '2015-12-30'
AND symbol_name = 'YESBANK';