I assume you mean the date shown in the ls command (this defaults to modification time--I think). The "find" command allows you to filter based on three kinds of time( accessed, changed status, and modified ) but the logic is based on the elapsed time and not an absolute date. (Look at "man find" to see if I've missed something)
The brute force way to do it is to simply use grep to find the date and then pass the filename to the mv command.
Something like this maybe (NOT TESTED)
for file in $(ls -l); do
movefile = $(echo $file | grep '<date string>' | sed -n '[^ ]*$')
mv $movefile <directory>
The sed command here strips off the actual filename, and assumes there are no spaces in the filename.
there must be an easier way to do this........