You do here something very strange! @DATE IS a datetime so why to turn it into string and try to parse it back to datetime???
I believe that the origin for that confusion is that you do not understand that datetime is a BINARY format that neglect any formating and the display format you see in SSMS is - well a display format only...
All you need is drop that unnecessary converting and compare date with date...on binary base...
WHERE TT.DATE = @DATE