2015-11-05 29 views

回答

1

使用正確的數據類型。使用datedecimal。不是varchar這些。

您的代碼:

create table historical_data 
(
current_day varchar(50) , 
open_value varchar(10) 
); 

INSERT INTO historical_data (current_day,open_value) values ('01-OCT-2015','23.50'); 
INSERT INTO historical_data (current_day,open_value) values ('03-OCT-2015','26.50'); 
INSERT INTO historical_data (current_day,open_value) values ('05-OCT-2015','21.50'); 
INSERT INTO historical_data (current_day,open_value) values ('03-Strawberries','33.44'); 


select * from historical_data 
where current_day between '01-OCT-2015' and '07-OCT-2015' 

亞克西,你有草莓

相反,這樣做:

create table historical_data2 
( id int auto_increment primary key, 
    current_day date not null , 
    open_value decimal(10,2) not null 
); 
truncate table historical_data2; 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-09-01','11.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-10-01','23.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-10-03','26.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-10-04','21.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('03-Strawberries','33.44'); -- Error 1292: Incorrect date value 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-10-31','22.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-11-01','33321.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-11-02','4443321.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-11-03','55533321.50'); 
INSERT INTO historical_data2 (current_day,open_value) values ('2015-11-04','66633321.50'); 

線束電源的內置MySQL的Date and Time Functionsadd_addinterval功能。當您使用適當的數據類型時,這些變得可用。加數學運算正確,並且佔用更少的空間。

select * from historical_data2 
where current_day between '2015-10-02' and DATE_ADD(date('2015-10-02'), INTERVAL 1 MONTH) 
+----+-------------+------------+ 
| id | current_day | open_value | 
+----+-------------+------------+ 
| 3 | 2015-10-03 |  26.50 | 
| 4 | 2015-10-04 |  21.50 | 
| 5 | 2015-10-31 |  22.50 | 
| 6 | 2015-11-01 | 33321.50 | 
| 7 | 2015-11-02 | 4443321.50 | 
+----+-------------+------------+ 

外賣:使用適當的數據類型

+0

我不能chnage的數據類型,因爲它會在很多地方體現出來,請你告訴我,所以我用date_to_str,並試圖通過這種方式SELECT * FROM history_data 其中current_day在str_to_date('2015-10-02','%Y-%m-%d')和DATE_ADD(str_to_date('2015-10-09','%Y-%m-%d')之間) ,INTERVAL 1 MONTH) – Pawan

+0

但爲什麼它沒有返回任何結果? – Pawan

+0

Preethi,我只能說我們有時候會提供一個答案,它不一定會幫助OP100%(或者如果有的話),但是它會使其他人受益。至於你在評論中的問題,我相信在堆棧或其他地方有很多例子。 – Drew

相關問題