2015-11-06 70 views
0

从用户界面,用户可以选择一个日期并点击提交按钮,根据输入字段如何显示下一个30天记录即使通过记录存在查询返回为空

这是我的架构

CREATE TABLE IF NOT EXISTS `historical_data` (
    `symbol_name` varchar(70) DEFAULT NULL, 
    `current_day` varchar(50) DEFAULT NULL, 
    `open_val` varchar(20) DEFAULT NULL, 
    `high_val` varchar(20) DEFAULT NULL, 
    `low_val` varchar(20) DEFAULT NULL, 
    `close_val` varchar(20) DEFAULT NULL, 
    `last_val` varchar(20) DEFAULT NULL, 
    `prevclose_val` varchar(20) DEFAULT NULL 
) ; 

INSERT INTO `historical_data` (`symbol_name`, `current_day`, `open_val`, `high_val`, `low_val`, `close_val`, `last_val`, `prevclose_val`) VALUES 
('YESBANK', '01-OCT-2015', '739', '739.4', '715', '728.6', '728', '729.7'). 
('YESBANK', '05-OCT-2015', '732.75', '753', '732.75', '750.25', '750.95', '728.6'). 
('YESBANK', '06-OCT-2015', '752.4', '756.6', '736.9', '743.1', '743.25', '750.25'). 
('YESBANK', '07-OCT-2015', '743.1', '745.65', '733.6', '735.75', '735.15', '743.1'). 
('YESBANK', '08-OCT-2015', '733', '735.5', '720.45', '727.35', '725.35', '735.75'). 
('YESBANK', '09-OCT-2015', '733.3', '741.9', '720.1', '725.65', '725', '727.35'). 
('YESBANK', '12-OCT-2015', '729.3', '736.5', '720.6', '723.75', '724.1', '725.65'); 

如果你看到有来自2015年10月2日

记录但是当我运行下面的查询

没有记录被提取

SELECT current_day,open_val,high_val,low_val,close_val FROM historical_data 
WHERE str_to_date(current_day,'%m-%b-%Y') BETWEEN '2015-10-02' AND DATE_ADD('2015-10-02',INTERVAL 1 MONTH) 
AND symbol_name = 'YESBANK' 

我的sqlfiddle

http://sqlfiddle.com/#!9/a6784/1

+2

为什么不存储日期是否正确? – Strawberry

+2

完美的模式!所有列,日期,小数,整数作为变量。 –

回答

1

你有你的STR_TO_DATE一个错字。试试这个查询

SELECT current_day,open_val,high_val,low_val,close_val FROM historical_data 
WHERE str_to_date(current_day,'%d-%b-%Y') BETWEEN '2015-10-02' AND 
DATE_ADD('2015-10-02',INTERVAL 1 MONTH) AND symbol_name = 'YESBANK' 

或只是'%d-%b-%Y'替换格式字符串'%m-%b-%Y'%m代表月份,但在您的日期这是一天(%d)。

在这里你可以找到所有可能的格式占位符的概述:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

的新工作拨弄你可以在这里找到:http://sqlfiddle.com/#!9/a6784/8/0