2016-07-18 3 views
-1

Я пытаюсь преобразовать smallnt в формат времени.Преобразование SmallInt во время

Я использую SQL Server 2005, который не поддерживает тип данных времени.

Я сохраняю время как 1400, которое является маленьким. При получении я хочу, чтобы он был преобразован в формат времени. Такие, как 14:00

Любые идеи или рекомендации по этому вопросу. Если есть более простой способ сделать это или если способ, которым я пытаюсь, возможен?

Благодаря

+1

Хотите ли вы преобразовать его в varchar '14: 00'? Как вы хотите, чтобы это было преобразовано? – Siyual

+1

Что именно вы подразумеваете под «форматом времени»? Поскольку вы не можете вернуть тип данных 'time' в SQL 2005, вы хотите varchar? дата-время? –

+0

либо tbh, выясняя пути, возможные до принятия решения @TabAlleman –

ответ

2

Вы можете получить результат, как varchar с помощью этого:

SELECT 
    RIGHT('0' + CONVERT(varchar(10), yourTime/100), 2) + ':' + 
    RIGHT('0' + CONVERT(varchar(10), yourTime % 100), 2) As timeString 
FROM 
    yourTable 

Вы также можете получить результат в формате DATETIME так:

SELECT 
    CONVERT(datetime, CONVERT(varchar(10), yourTime/100)+ ':' + CONVERT(varchar(10), yourTime % 100)) 
FROM 
    yourTable 

В SQL Server 2012+ вы можете получить результат в формате времени:

SELECT 
    TIMEFROMPARTS(yourTime/100, yourTime % 100, 0, 0, 0) As timeFormat 
FROM 
    yourTable 
+0

ОП конкретно упоминает в своем вопросе, что он использует SQL Server 2005, который не поддерживает тип данных TIME. – Siyual

+0

Не мой dv, но 'TIMEFROMPARTS' недоступен в 2005 году. –

+0

@MartinSmith Я думаю, что он доступен из [SQL Server 2012] (https://msdn.microsoft.com/en-us/library/hh213398 (v = sql.110) .aspx);). –

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