2015-11-06 43 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