Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlVM
Member

Откуда:
Сообщений: 41
Есть строки дата и время, типа.
sd := '21.10.2014';
st := '13:12:11';

Требуется конвертировать их в тип float в стиле С++.
Т.е. должно получится:
fd := 41933;
ft := 0,5501273148;

Со второй частью задачи разобрался:
SELECT TO_NUMBER(TO_CHAR(TO_DATE(:ST,'HH24:MI:SS'),'SSSSS'))/86400 FROM DUAL;
Пусть коряво, но работает.

А вот как быть с датой?
Конвертировать в тип дата - не проблема, а дальше?
22 мар 16, 21:01    [18966105]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2852
AlVM
Есть строки дата и время, типа.
sd := '21.10.2014';
st := '13:12:11';

Требуется конвертировать их в тип float в стиле С++.
Т.е. должно получится:
fd := 41933;
ft := 0,5501273148;

Со второй частью задачи разобрался:
SELECT TO_NUMBER(TO_CHAR(TO_DATE(:ST,'HH24:MI:SS'),'SSSSS'))/86400 FROM DUAL;
Пусть коряво, но работает.

А вот как быть с датой?
Конвертировать в тип дата - не проблема, а дальше?

select date '2014-10-21' - 41933 from dual
22 мар 16, 21:06    [18966125]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlVM
Member

Откуда:
Сообщений: 41
AlexFF__|,

Получится 30.12.1899 00:00:00 и что?!

Мне нужно получить из строки '21.10.2014' цифру 41933.
22 мар 16, 21:16    [18966151]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2852
AlVM
AlexFF__|,

Получится 30.12.1899 00:00:00 и что?!

Мне нужно получить из строки '21.10.2014' цифру 41933.

10 - 7 = 3
Вопрос, как имея 10 и 3 получит 7?
Мозгов хватит?
22 мар 16, 21:25    [18966196]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlVM
Member

Откуда:
Сообщений: 41
AlexFF__|,
А как потом конвертировать тип date в тип NUMBER или FLOAT? В этом и есть весь вопрос. CAST не работает.
22 мар 16, 21:31    [18966222]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlexFF__|
Member

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

Нда, совсем все плохо с новыми кадрами в стране )
select date '2014-10-21' - date '1899-12-30' from dual
22 мар 16, 21:55    [18966324]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54376
AlVM
AlexFF__|,

Получится 30.12.1899 00:00:00 и что?!

Мне нужно получить из строки '21.10.2014' цифру 41933.
нельзя получить то, чего не бывает
22 мар 16, 22:59    [18966516]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlVM
Member

Откуда:
Сообщений: 41
AlexFF__|,
Спасибо, разобрался.
В MS SQL работает прямое преобразование, что удобно.
23 мар 16, 05:11    [18966775]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
1900-02-29
Guest
AlVM
В MS SQL работает прямое преобразование, что удобно.
Когда ms тырила идеи лотус-1-2-3, она стырила и незнание, какие года високосные. Не уверен, перепернял ли свое невежество mssql уже от sybase, но делал это последолго позже, чем вышла вторая версия oracle. Так что равняться в "удобстве" было не на кого. С другой стороны, большинство систем, в отличие от oracle и ms, пользуют unix-time. Понятно, что многоизобретателю велосипедов ms позорно было тырить с юникса еще и unix time. А оракл не счел для себя интересным сильно искусственную абстракцию ввиду достаточной популярности в базах дат до 1970 (отрицательный числец) и непопулярности измерения возраста в секундах. Зато поддерживает странный формат J-ulian для измерения возраста христа в целых днях строкового представления.
23 мар 16, 09:14    [18966973]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34630
AlVM,
а с чего ты взял, что дата в виде float - это в стиле C++?
23 мар 16, 10:05    [18967128]     Ответить | Цитировать Сообщить модератору
 Re: Как конвертировать тип DATE в тип FLOAT в стиле С++?  [new]
AlVM
Member

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

Ну да, в с++ это - DOUBLE, не суть важно.
23 мар 16, 10:29    [18967227]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить