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

Откуда:
Сообщений: 25
есть таблица events в которой есть поле TRANDATETI в котором отображается время в виде чисел (пример: 40603,5428472222, но необходимо чтоб отображалось как 01.03.2011 13:01:42). что можете посоветовать?
12 май 11, 11:40    [10640347]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Glory
Member

Откуда:
Сообщений: 104751
А откуда вы знаете, что числу 40603 соответствует датавремя 01.03.2011 13:01:42 ?
12 май 11, 11:43    [10640380]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Начинающий SQL 2008
Member

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

select cast(40603.5428472222 as  datetime)
12 май 11, 11:44    [10640387]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
patrbus
поле TRANDATETI в котором отображается время в виде чисел
А в каком клиенте?
12 май 11, 11:45    [10640396]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Похоже на дельфийскую дату-время.
Целая часть - количество дней от '18991231'
Дробная часть - время как доля суток.
12 май 11, 11:57    [10640499]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
Похоже на дельфийскую дату-время.
Целая часть - количество дней от '18991231'
Дробная часть - время как доля суток.
Наврал:
Целая часть - количество дней от '18991230'
12 май 11, 12:11    [10640586]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
значение 40603,5428472222 может появиться только после преобразования во float
12 май 11, 12:14    [10640607]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
или ето линуховое время, преобразование на форуме я дето выкладывал, уже просто не помню с какого дня там отсчет...
но гуглиться на раз.два
12 май 11, 12:18    [10640640]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Это не UNIX Time, во первых не целое, во вторых очень малое значение. Это или конвертированое SQLное, или OLE (в Дельфи именно оно используется)
12 май 11, 12:30    [10640733]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
patrbus
Member

Откуда:
Сообщений: 25
это число берется из dbf базы. но это число можно переконвертировать через openoffice
12 май 11, 13:04    [10640996]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
DECLARE @D DEC(15,10)=40603.5428472222;
SELECT DATEADD(SECOND,86400*(@D-FLOOR(@D)), DATEADD(DAY,FLOOR(@D),'18991230'));
12 май 11, 13:10    [10641039]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
iljy
Member

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

зачем так сложно?
select CAST(@d-2 as datetime)
12 май 11, 13:12    [10641047]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iljy
iap,

зачем так сложно?
select CAST(@d-2 as datetime)
Действительно.
12 май 11, 13:13    [10641056]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
patrbus
Member

Откуда:
Сообщений: 25
а как не одно число перевести, а весь столбец?
12 май 11, 15:53    [10642510]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
заеменить @d из примера названием своего поля
12 май 11, 15:58    [10642571]     Ответить | Цитировать Сообщить модератору
 Для справки  [new]
-2-
Member

Откуда:
Сообщений: 15330
Некорректный отсчет дней с 1900-01-01 как от високосного появился в lotus-1-2-3. Потом это своровал ms-excel, к нему примазались еще много кого.
12 май 11, 19:24    [10644003]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
patrbus
таблица в которой есть поле в виде чисел 40603,5428472222, но необходимо чтоб как 01.03.2011 13:01:42.
что можете посоветовать?
Перестроить интерфейсы данных, чтоб хранилось в DateTime.

Вы можете не поверить, но возможно для это потребуется поменять всего-лишь две строки а двух процедурах (ну + ALTER TABLE) и никто этого не заметит, зато столько гемора с плеч.
12 май 11, 22:19    [10644380]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
patrbus
Member

Откуда:
Сообщений: 25
пишу повторно. в результате действий запроса в табличке появляется число такого типа, через запятую 40674,3479166667, а все запросы приведенные тут работают если число пишется через точку. что можете посоветовать?
21 июн 11, 16:26    [10848453]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Повторю еще раз, это отображение в формате с плавающей запятой.
21 июн 11, 16:39    [10848603]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
patrbus
Member

Откуда:
Сообщений: 25
и что же тогда делать?
21 июн 11, 16:53    [10848798]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Разбираться где напортачил, поскольку что бы показывало правильно - ничего делать не надо.
21 июн 11, 16:57    [10848853]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
patrbus
Member

Откуда:
Сообщений: 25
не знаю, таблица делалась до меня. просто может кто знает формулу перевода? так как другая программа нормально переводит,да и openoffice тоже нормально переводит
24 июн 11, 13:45    [10869028]     Ответить | Цитировать Сообщить модератору
 Re: конвертация времени  [new]
smallserg_guest
Guest
А вдруг у partbus тип этого поля текстовый ? Тогда -

select convert(float,STUFF('40603,5428472222', charindex(',','40603,5428472222'), 1, '.') ) d

Результат - как у Вас в таблице

d
40603,5428472222

Обернем результат этого select в Cast -

select cast(convert(float,STUFF('40603,5428472222', charindex(',','40603,5428472222'), 1, '.') ) as datetime) d

Получим -

d
2011-03-03 13:01:41.997
8 июл 11, 18:03    [10947786]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить