At first glance that looks right.
If I were trying to debug this I would create the string field on a dummy sheet and just display that (not wrapped in DATETIME yet) to see what your syntax is actually doing. You might find something amiss in the actual logic that way.
I was able to find a solution by using the below calculation where it does not return null values after data extract
Luckily I have month, day of month and year fields already defined in DB
DATETIME((str([Month]) + '/' + str([Day Of Month]) + '/' + str([Year])) + " "
+ STR(DATEPART('hour',[Time]))+ ":"
+ STR(DATEPART('minute',[Time]))+ ":"