The problem is you are supplying a date for a datetime/timestamp comparison. So I am guessing it converts your supplied date (2013-03-23) to a timestamp (2013-3-23 00:00:00).
Quick fix: You can have the two dates like "2013-03-23 00:00:00" and "2013-03-23 23:59:59".
Good solution: You DQL native query to call MySQL's date() function to convert your timestamp field (fecha_publicacion) to date. After that you will be able to use the between function.