2015-10-21 2 views
-2

В приведенном ниже сценарии, Как преобразовать столбец HHMM в HH:MM и
преобразовать его в 12ч часы?нужно форматировать обугленного (4) HHMM только или текстовое время, чтобы выглядеть как чч: мм в SQL

Столбец char(4) и формат 0000 - 2359. Просто хотите время или текст с двоеточием (:), нет даты.

Обратите внимание, что мне не нужна дата или секунды. Как мне это сделать? Благодарим за помощь!

Select  
      th.[store] as 'My Store', 
    ---> this column th.hhmm as Time, (I need this to format hh:mm) 
      emp.[First Name], 
      td.Type as [Total], 
      Count(*) as Qty, 
      Convert(varchar(50),SUM(Amount1),1) AS Amount 
+0

Это сценарий: Выберите \t-й [магазин] как 'Мой магазин', ---> этот столбец е.. hhmm as Time, (мне нужно это для форматирования hh: mm) emp. [Name], td.Type as [Total], Count (*) as Qty, Convert (varchar (50), SUM (Amount1), 1) AS Сумма –

+2

мольба se tag в базе данных, которую вы используете –

ответ

0

Вы можете использовать substr, чтобы сделать это в Oracle.

select substr(th.hhmm,1,2)||':'||substr(th.hhmm,3,2) from t 

В SQL Server, вы можете использовать substring

select substring(th.hhmm,1,2)+':'+substring(th.hhmm,3,2) from t 

Fiddle with sample data

Edit:

select 
case when cast(substring(th.hhmm,1,2) as int) < 12 then 
      case when cast(substring(th.hhmm,1,2) as int) = 0 then 
      '12'+':'+substring(th.hhmm,3,2)+' AM' 
      else substring(th.hhmm,1,2)+':'+substring(th.hhmm,3,2)+' AM' end 
    when cast(substring(th.hhmm,1,2) as int) > 12 then 
    cast(substring(th.hhmm,1,2)%12 as varchar(2)) +':'+substring(th.hhmm,3,2)+' PM' 
    when cast(substring(th.hhmm,1,2) as int) = 12 then 
    substring(th.hhmm,1,2)+':'+substring(th.hhmm,3,2)+' PM' 
end 
+0

vkp, спасибо .. это дало мне правильный формат ... теперь есть способ конвертировать в формат 12hr ... i.e. С 13:00 до 13:00 в то же время? –

+0

, вы должны пометить вопрос соответствующей базой данных, которая бы облегчила людям ответ –

+0

Я думал, что сделал ... это sql server 2003, извините –

0

Попробуйте это. Он использует LEFT и RIGHT функции

declare @time char(4)='2359' 
select left(convert(varchar(100),cast(concat(left(@time,2),':',right(@time,2)) as time),9),5)+ 
       ' '+ 
     right(convert(varchar(100),cast(concat(left(@time,2),':',right(@time,2)) as time),9),2) 
0

SQL Server:

right('00' + cast((cast(substring(th.hhmm, 1, 2) as int) - 1) % 12 + 1 as varchar(2)), 2) + 
':' + substring(th.hhmm, 3, 2) + 
case when cast(substring(th.hhmm, 1, 2) as int) >= 12 then 'pm' else 'am' end