• 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

    "I cant stress enough the importance of switching from a sequential files mindset to set-based thinking. After you make the switch, you can spend your time tuning and optimizing your queries instead of maintaining lengthy, poor-performing code."

    -- Itzik Ben-Gan 2001