Вы используете string:substr, которая ожидает на вход список, а вы на вход подаете бинарную строку - <<"2013-12-17 18:36:42">>.
Используйте бинарный патерн мачинг:
string_to_datetime(<<YY:4/binary,_:1/binary,MM:2/binary,"и т.д.",_/binary >>) -> ....
А может не стоит в вашем случае использовать списки, может бинари лучше?