This is a suggestion :
CHANGE sdate to TEXT
queries i have tried and got results accordingly;
SELECT * FROM Income WHERE sdate BETWEEN date('now', '-6 days') AND date('now', 'localtime');
SELECT * FROM Income WHERE sdate >= date('now', 'start of month') AND sdate <= date('now', 'localtime');
you can also use static date:
SELECT * FROM Income WHERE sdate >= '2016-02-01' and sdate <= '2016-03-01';
similarly all three given in this answer on stackoverflow.
Now, once you get this day, week, month you can use this variable to generate final query by using AND clause.
If you want to simply use sorted order by date than
SELECT * FROM Income WHERE sdate BETWEEN date('now', '-6 days') AND date('now', 'localtime') ORDER by sdate;
Thus, you can get result as you want.