Point it the other way, otherwise you are comparing strings:
select RegisteredDate from Student where convert(date, Student.RegisteredDate, 103) between '20140130' and '20150430'
The fact is that these dates, saved as strings, are ordered as:
'29/02/2015', '30/03/2015', '30/04/2015', '30/04/2015', '31/04/2015'
Now imagine where you would add filter values?
'29/02/2015', '30/01/2014' --start date /-------------\ |'30/03/2015',| |'30/04/2015',| |'30/04/2015',| \-------------/ '30/04/2015' --end date '31/04/2015'
So, between will return these three lines to you. Also you have data 29/02/2015 . In 2015 February ends at 28 (you already have invalid data in the tables). You can never insert such values ββif you select the types correctly. In this way:
Use the appropriate data types for your data.
source share