2016-11-10 1 views
1

Ich recherchierte überall darüber, aber ich kann nicht scheinen, es zu finden.SQL: Add Space vor AM/PM nach der militärischen Zeit Umwandlung

Ich habe eine Spalte namens OPEN_TIME die militärische Zeit enthält wie:

1900-01-01 23:00:00.000 

Ich möchte nur die Zeit extrahieren, die ich erfolgreich tat, indem Sie:

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

aber das gibt mir eine Zeit von:

11:00PM 

Ich würde gerne einen Platz vor AM/PM setzen, so dass es lik aussieht e:

Nicht sicher, ob das so einfach ist, wie es aussieht? Jeder Rat würde geschätzt werden.

+0

Duplikat http://stackoverflow.com/questions/9131015/datetime-field-using- Militär-Zeit-brauchen-nur-Zeit-in-Standard-Zeit? – Aron

+1

@Aron dieser hat kein Leerzeichen – Hello

+0

@a_horse_with_no_name SQL-Server 2014 – Hello

Antwort

2

Wenn 2012+ Sie Format verwenden können()

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

Returns

11:00 PM 

sollte ich das Format beachten() ist für seine Leistung nicht bekannt.

0

Wenn Sie 2012 nicht verwenden oder Format nicht verwenden möchten, können Sie dies mit STUFF erreichen.

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

1

In jeder Version von SQL Server können Sie die REPLACE Funktion

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