It probably has always been thus but in the the first two examples the DATE in dtOne is overwritten by the date in dtTwo but the last one behaves as you would expect

Code:
        Procedure OnClick
            DateTime dtOne dtTwo
            Integer iVal
            
            Move "1/1/1990 12:24" to dtOne
            Move "2/2/2019 15:19" to dtTwo
            Move (DateSetHour(dtOne,DateGetHour(dtTwo))) to dtOne


            Move "1/1/1990 12:24" to dtOne
            Move "2/2/2019 15:19" to dtTwo
            Move (DateSetHour(dtOne,Integer(DateGetHour(dtTwo)))) to dtOne


            Move "1/1/1990 12:24" to dtOne
            Move "2/2/2019 15:19" to dtTwo
            Move (DateGetHour(dtTwo)) to iVal
            Move (DateSetHour(dtOne,iVal)) to dtOne
        End_Procedure