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

Откуда: Санкт-Петербург
Сообщений: 111
В старой программе есть таблица Paradox, данные в которую пишутся по двум полям - [Date] типа date и [Time] типа integer.
На MS SQL есть аналогичная таблица, куда эти данные копируются, таблица содержит три поля времени: [DateTime], [Date] типа datetime и [Time] типа smallint. Два последних поля оставлены для совместимости со старой программой, реально рабочим полем для новых программ является поле [DateTime]. Соответственно, когда приходят данные из старой программы, триггер на таблице MS SQL должен объединить данные из полей [Date] и [Time] в одно значение для [DateTime]. С датой все понятно:
IF (SELECT (Inserted.DateTime FROM Inserted) IS NULL)
UPDATE TblTimes SET [DateTime]=[Date] WHERE ID=(SELECT ID FROM Inserted)
Де-факто целое значение в поле [Time] - умноженная на 10000 дробная часть даты. Как присоединить эту часть к полю [DateTime] как время?
15 апр 05, 14:24    [1471768]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести smallint d дробную часть datetime?  [new]
aleks2
Guest
cast((cast(Date as float)+cast(Time as float)/10000) as datetime)
16 апр 05, 07:01    [1473431]     Ответить | Цитировать Сообщить модератору
 Re: Как перевести smallint d дробную часть datetime?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Де-факто целое значение в поле [Time] - умноженная на 10000 дробная часть даты. Как присоединить эту часть к полю [DateTime] как время?
Если в Paradox дробная часть даты есть количество миллисекунд, прошедших с полуночи то
select dateadd(ms, [Time]/10000, [Date])
16 апр 05, 15:30    [1473841]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить