为什么在这种情况下Date_ADD间隔不起作用

时间:2015-12-19 07:39:34

标签: mysql

我的前端有日期选择器,用户可以选择日期和符号并获得其历史价格

从选定日期开始,我将提取下一个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

你能否告诉我为什么没有记录

3 个答案:

答案 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';