SQL: ajout d'espace avant AM / PM après la conversion de l'heure militaire

J'ai fait des searchs partout à ce sujet mais je n'arrive pas à le find.

J'ai une colonne appelée OPEN_TIME qui contient le time militaire tel que:

1900-01-01 23:00:00.000 

Je veux seulement extraire le time, ce que j'ai fait avec succès en faisant:

 LTRIM(RIGHT(CONVERT(varchar, OPEN_TIME, 100), 7)) 

Cependant, cela me donne un moment de:

 11:00PM 

Je voudrais mettre un espace avant AM / PM pour qu'il ressemble à:

 11:00 PM 

Vous ne savez pas si c'est aussi simple que ça en a l'air? Tout avis sera le bienvenu.

Si 2012+ vous pouvez utiliser Format ()

 Declare @Open_Time DateTime = '1900-01-01 23:00:00.000' Select Format(@Open_Time,'hh:mm tt') 

Résultats

 11:00 PM 

Je devrais noter que Format () n'est pas connu pour ses performances.

Dans n'importe quelle version de SQL Server, vous pouvez utiliser la fonction REPLACE

 REPLACE(LTRIM(RIGHT(CONVERT(varchar, OPEN_TIME, 100), 7)),'PM',' PM') 

Si vous n'utilisez pas 2012 ou ne voulez pas utiliser Format, vous pouvez le faire avec STUFF.

 Declare @Open_Time DateTime = '1900-01-01 23:00:00.000' SELECT STUFF( LTRIM(RIGHT(CONVERT(VARCHAR, @OPEN_TIME, 100), 7)), LEN(LTRIM(RIGHT(CONVERT(VARCHAR, @OPEN_TIME, 100), 7))) - 1, 0, ' ') 

https://msdn.microsoft.com/en-us/library/ms188043.aspx