You can use a dynamic query.
Try something like this:
create procedure sp_test
@datefield varchar(20)
as
set nocount on
declare @queryString varchar(200)
set @queryString = 'select '+datename(dw,@datefield)+' = ''a value'''
execute(@queryString)
execute sp_test '07/19/04'
execute sp_test '07/20/04'
execute sp_test '07/21/04'
You should get the alias 'Monday', 'Tuesday' & 'Wednesday' (with 'a value' as the value)