Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Конвертация time из int  [new]
Torre
Member

Откуда:
Сообщений: 204
Всем здравствуйте, по наследству досталась БД, в ней часы и минуты хранятся в int, например: 1200, 1300, 1530, 1800, 1830, 1900, 1330, 1500 и т.д.
Как конвертировать такие данные в time?
16 окт 13, 23:22    [14982993]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
поделить на 100
частное умножить на 60 и прибавить к нему остаток
полученных в минутах результат прибавить к нулевому времени
16 окт 13, 23:38    [14983043]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
kalimba
Member

Откуда:
Сообщений: 297
Torre,

Может неправильно понял, но вроде так
DECLARE @test int = 1543
SELECT CAST(CAST(LEFT(@test, 2) AS nvarchar(2)) + N':' + CAST(RIGHT(@test, 2) AS nvarchar(2)) AS time(0))
16 окт 13, 23:42    [14983054]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
kalimba
Torre,

Может неправильно понял, но вроде так
DECLARE @test int = 1543
SELECT CAST(CAST(LEFT(@test, 2) AS nvarchar(2)) + N':' + CAST(RIGHT(@test, 2) AS nvarchar(2)) AS time(0))


DECLARE @test int = 0543
SELECT CAST(CAST(LEFT(@test, 2) AS nvarchar(2)) + N':' + CAST(RIGHT(@test, 2) AS nvarchar(2)) AS time(0))
16 окт 13, 23:44    [14983058]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
Torre
Member

Откуда:
Сообщений: 204
Спасибо за помощь, но мне проще парсить тогда строку на уровне приложения. То есть без конвертации в строку задачу не решить?
16 окт 13, 23:50    [14983074]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35395
Блог
locky
поделить на 100
частное умножить на 60 и прибавить к нему остаток
полученных в минутах результат прибавить к нулевому времени


Torre
То есть без конвертации в строку задачу не решить?
16 окт 13, 23:56    [14983093]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Критик
locky
поделить на 100
частное умножить на 60 и прибавить к нему остаток
полученных в минутах результат прибавить к нулевому времени


Torre
То есть без конвертации в строку задачу не решить?


DECLARE @test int = 1543

select dateadd(mi,@test / 100*60+@test%100,cast('00:00' as time(0)))
16 окт 13, 23:58    [14983097]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация time из int  [new]
Torre
Member

Откуда:
Сообщений: 204
Спасибо, locky, сделал из твоего примера скалярную функцию.
17 окт 13, 05:06    [14983266]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить