martes, 11 de abril de 2017

Ordenar hora por AM/PM en Sql Server

Hace unos días estuve trabajando con fechas y horas el tema es que la columna fecha era de tipo varchar (el motivo ??), entonces me las ingenié para mostrar de forma ordenada las horas y esto es lo que hoy quiero compartir con ustedes.

DECLARE @Hora TABLE
(
Horas VARCHAR(50)
)

INSERT INTO @Hora VALUES ('01:00:03 p.m.')
INSERT INTO @Hora VALUES ('02:00:01 p.m.')
INSERT INTO @Hora VALUES ('10:00:06 a.m.')
INSERT INTO @Hora VALUES ('04:00:09 p.m.')
INSERT INTO @Hora VALUES ('10:00:07 p.m.')
INSERT INTO @Hora VALUES ('08:00:01 a.m.')
INSERT INTO @Hora VALUES ('09:00:00 a.m.')
INSERT INTO @Hora VALUES ('03:00:00 a.m.')
INSERT INTO @Hora VALUES ('03:00:10 p.m.')

SELECT *
FROM @Hora
ORDER BY CASE 
                       WHEN CHARINDEX('a',Horas) > 0
                              THEN 1
                           ELSE 2
                        END, Horas

         
 Y este es el resultado.


Como vieron es muy sencillo, espero sea de su ayuda.