ORDENAR 25 REGISTROS MAS RECIENTES Y 25 MAS ANTIGUOS SQL


Hola que tal quisiera saber como en una sola consulta traer 25 registros mas recientes y 25 antiguos tengo la siguiente consulta:

SELECT * FROM (SELECT TOP 25 * FROM ubicaciones ORDER BY fecha) RECIENTE UNION  SELECT * FROM (SELECT TOP 25  * FROM ubicaciones ORDER BY fecha DESC) ANTIGUOS ORDER BY fecha DESC 

quiero que salga por fecha y hora pero no se si la conulta esta bien me funciona pero no se si en mejor practica esta bien