从用户界面,用户可以选择日期并点击提交按钮,根据输入字段如何显示未来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
答案 0 :(得分: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'
或只是将格式字符串'%m-%b-%Y'
替换为'%d-%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