Si tiene diferentes campos que también tienen un significado diferente, no puede ni debe devolverlos en la misma posición. Sin embargo, puede 'llenar los espacios en blanco' agregando nulo a sus campos, así:
select id, name, date, null as userid, 'A' as recordtype from table1
union all
select id, name, null /*as date*/, userid, 'B' as recordtype from table2
Puede proporcionar un alias para el nulo en la primera selección. Puede agregar alias en la segunda selección para mayor claridad, pero no se usará. Incluso puede usar valores constantes que puede usar para distinguir el tipo de registro más adelante.