2015-06-03 3 views
0

Что делать, если у вас просто есть поле времени, которое хранится как char и отображается в военное время, например (1015), и вы просто хотите отформатировать его до стандартного времени, используя sql-код. Есть ли способ сделать это?Преобразование времени от военного до стандартного AM/PM Microsoft SQL

Update:

Чтобы уточнить, я определяю "стандартное время" в том смысле, 6:30 вечера или 4:30.

+0

Можете ли вы описать то, что вы считаете стандартным форматом времени? – sstan

+1

Разделите его на настоящую дату, а затем отформатируйте его так, как хотите. https://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/. Однако, как правило, лучше хранить свои даты в качестве фактических дат в SQL Server и форматировать их в своем приложении. –

+0

Стандартное время, например, 18:30 или 4:30. Спасибо, Роберт. –

ответ

1

Первый шаг должны вставить двоеточие в ваше военное время:

DECLARE @Time CHAR(4) = '1015'; 
SELECT STUFF(@Time, 3, 0, ':'); 

Который дает 10:15

Затем вы можете преобразовать его в тип данных времени:

DECLARE @Time CHAR(4) = '1015'; 
SELECT CONVERT(TIME, STUFF(@Time, 3, 0, ':')); 

Какого дает 10:15:00.0000000

И наконец, вы c преобразовать обратно в VARCHAR, со стилем 100, чтобы получить его в 12-часовом формате:

DECLARE @Time CHAR(4) = '1015'; 
SELECT CONVERT(VARCHAR(7), CONVERT(TIME, STUFF(@Time, 3, 0, ':')), 100); 

Что дает 10:15AM

Или

DECLARE @Time CHAR(4) = '2157'; 
SELECT CONVERT(VARCHAR(7), CONVERT(TIME, STUFF(@Time, 3, 0, ':')), 100); 

Что дает 9:57PM

Стандарт способ справиться с этим, но будет хранить время, используя тип данных TIME, и делать все форматирование в вашем слое презентации ,

+0

Большое вам спасибо. –

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