2016-04-12 3 views
0

У меня есть столбец 24 часа, и мне нужно изменить его на 12 часов, пожалуйста, помогите.как конвертировать 24 часа до 12 часов в sql

Start time 
    174300 
    035800 
    023100 

Результат должен быть

Start time 
    05.43 PM 
    03.58 AM 
    02.31 AM 
+1

что тип данных времени начала? –

+0

Тип данных - varchar (20) – user2302158

+6

Не хранить время в varchar ... – jarlh

ответ

1

Используйте STUFF функции для преобразования строки в Time формат

SELECT CONVERT(VARCHAR,CAST(STUFF(STUFF(ColumnName,3,0,':'),6,0,':') AS TIME),100) 
+0

Вы никогда не должны использовать varchar без указания длины, в этом случае вы даже можете использовать CHAR (7). Хороший ответ, однако .. –

+0

@ t-clausen.dk В функции преобразования по умолчанию varchar принимает длину 30 символов. –

+0

Существует ссылка на это [ЗДЕСЬ] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx) по Aaron Bertrand –

0

С помощью одного из приведенных выше примеров - следующие будут работать. Вам необходимо разделить данные на часы/минуты и приведение его в формат времени, чем преобразовать его в соответствующий тип:

declare @data int 
set @data = 174300 



select convert(VARCHAR(15),cast(cast(left(@data, 2)as varchar(2)) + ':' + cast(substring(cast(@data as nvarchar(6)), 3,2)as varchar(2)) as time),100) 
0

Не храните время как VARCHAR, вместо того, чтобы изменить вашу таблицу и изменить тип столбца к дате.

SELECT right(convert(varchar(25), Start Time, 100), 7) 

100 вы видите в функции определяет формат даты пн дд гггг чч: Miam (или PM), а оттуда мы просто захватить нужные символы.

Вы можете увидеть больше о преобразовательных DateTimes here.

Смежные вопросы