Is it bad practice to use separate columns for parts of date values?
It is a bad practice in a transactional/operational database and a good practice in an analytic/data warehouse database. 

In a data warehouse I recommend using an integer "smart key"&dagger; for your date dimension (like 20160328), but also including an actual date-type column, as well as the broken-down date parts. 

The broken down date parts are more for ease of analysis, than speed of querying. 

&dagger; This makes it easy to partition your fact tables.