Short answer:
Escape the % as \%:
0 * * * * echo hello >> ~/cron-logs/hourly/"test$(date +\%d).log"
This also uses $(...) instead of the deprecated `...` syntax for command substitution and quotes the expansion of said command substitution.
Long answer:
The error message suggests that the shell which executes your command doesn't see the second backtick character:
/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'
This is also confirmed by the second error message you received when you tried one of the other answers:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ')'
The crontab manpage confirms that the command is read only up to the first unescaped % sign:
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.