Not sure what you wanted, but it's just syntax error. Maybe you wanted to check for equality (then use == instead of =). But it may not be the case, because then return type should be Bool, not String.
Also, the example looks strange, because not all arguments of function weekday are used in its definition.
Update
I suspect, your code should be like this:
weekday :: Int -> Int -> Int -> String
weekday jahr monat tag =
let name = (mod ( tag + x + (div ( 31 * m ) 12 )) 7 )
in
case name of
0 -> "Sonntag"
1 -> "Montag"
2 -> "Dienstag"
3 -> "Mittwoch"
4 -> "Donnerstag"
5 -> "Freitag"
6 -> "Samstag"
where
y = jahr - ( div ( 14 - monat ) 12 )
x = y + ( div y 4 ) - ( div y 100 ) + ( div y 400 )
m = monat + (12 * ( div ( 14 - monat ) 12 )) - 2
It even does work (although I didn't check result): http://ideone.com/YAKXTU
You should learn a bit more about meanings of essential Haskell constructs let and where, and there is a good book "Learn You a Haskell for Great Good!" which I recommend. Good luck!