Why is it doing this
It has to do with how SSRS explicitly converts values. If the time is 00:00:00 it is assuming you want to treat the values as a date; otherwise it wants to treat the value as a datetime.
what can I do to force it to always be dd/mm/yyyy hh:mm
Inside the query that feeds your dataset you can convert the date value to a varchar, then replace the text '00:00:00' with '00:00:01' then convert it back to datetime. Note my example below:
DECLARE @dt datetime = '1/1/2012 00:00:00';
SELECT
date_original = @dt,
date_new = CONVERT(datetime, REPLACE(CONVERT(varchar(30), @dt, 20),'00:00:00','00:00:01'))
Results:
date_original date_new
----------------------- -----------------------
2012-01-01 00:00:00.000 2012-01-01 00:00:01.000
-- Itzik Ben-Gan 2001