为什么查询返回为空,即使存在记录

时间:2015-11-06 14:45:15

标签: mysql

从用户界面,用户可以选择日期并点击提交按钮,根据输入字段如何显示未来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

1 个答案:

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