Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
09.07.2002, 10:58
|
|||
---|---|---|---|
Вычитание дат |
|||
#18+
Имеется две даты некоторого периода. Необходимо получить строку 'YY.MM.DD' (это не формат даты !!!), где YY - число лет в периоде, ММ - число месяцев DD - число дней Т.е необходимо получить сколько было лет, месяцев и дней. Например: ' 08.01.17' означает 8 лет, 1 месяц и 17 дней. Как изящней решить эту задачу на PLSQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2002, 12:29
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
мне кажется, дни не получится посчитать - месяцы то разные ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.07.2002, 12:57
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
все просто раскладываешь на составляюшие, yy1=to_number(to_char(первая_дата,'yy')); -- лучше испльзовать 4 знака mm1=to_number(to_char(первая_дата,'mm')); dd1=to_number(to_char(первая_дата,'dd')); потом тоже самое делаешь со второй датой и вычитаешь одно из другого по раздельности с учетом переноса и кол-вом дней в месяце и годе(это уже организационные вопросы) P.S. интересно, а как будет выглядеть твоя строка между 28.02.1999 и 28.02.2000, а также между 28.02.2000 и 28.02.2001. В каком случае будет считаться, что прошел год? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2002, 09:40
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
я тут немного ошибся в PS. даты следует читать 28.02.1999 - 29.02.2000 и 29.02.2000 - 28.02.2001. я просмотрел какие есть функции для работы с датами и обнаружил MONTHS_BETWEEN, которая может существенно упростить мой алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.07.2002, 16:13
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
select to_date('23-04-2002','dd-mm-yyyy')-to_date('23-04-1977','dd-mm-yyyy' ) a from dual; ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2002, 13:11
|
|||
---|---|---|---|
Вычитание дат |
|||
#18+
select to_date(to_date('10.07.2002', 'DD.MM.YYYY') - to_date('10.03.1980', 'DD.MM.YYYY')) from dual ORA-01847: day of month must be between 1 and last day of month. А не подскажет ли мне уважаемый g-al@yandex.ru как поступать в таком случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.07.2002, 17:38
|
|||
---|---|---|---|
Вычитание дат |
|||
#18+
Мистер (а, не, мусье) SAA_. Форматы данных необходимо соблюдать. Разница дат в скобках имеет тип NUMBER. А TO_DATE (за скобками) переводит строку (вида даты) по маске в тип DATE. Тут же получаеться чушь: TO_DATE(8157) - собственно не несет в себе никакого смысла. Как оракл разбирает эту строку (цифру) да и с какой маскои - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.07.2002, 16:58
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
Как правильно заметил господин None выражение to_date('23-04-2002','dd-mm-yyyy')-to_date('23-04-1977','dd-mm-yyyy' ) дает количество дней в периоде. Задача средней школы по информатике - перевод дней в года и месяца. :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.07.2002, 10:02
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
g-al@yandex.ru: Это как ты собираешься переводить дни в месяцы и годы? Кол-во дней в году переменно, кол-во дней в месяце тоже. Этот вариант я не стал предлагать потому, что это самый очевидный и самый не точный алгоритм. В варианте с MONTHS_BETWEEN надо разобраться только с кол-вом дней, т.к. кол-во месяцев в году это единственная постоянная величена. Да и с днями разобраться достаточно просто, если внимательно прочитать об этой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.07.2002, 14:31
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
g-al@yandex.ru, Вы кажется путаете две разные задачи: 1. По номеру дня в году определить его дату 2. Определения кол-ва лет, месяцев и дней между двумя датами. Это две абсолютно разные задачи. Например, 30 дней после 1 января это так и будет 30 дней, но теже 30 дней после 1 февраля это уже 1 месяц и 2 дня (или 1 день, в зависимости от високосности года). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.07.2002, 14:43
|
|||
---|---|---|---|
|
|||
Вычитание дат |
|||
#18+
ага! Теперь понял вопрос. Действительно напутал... Подумаю, напишу ответ.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.07.2002, 19:16
|
|||
---|---|---|---|
Вычитание дат |
|||
#18+
None, я вас люблю! 1. Именно это я и хотел сказать. ЧУШЬ!!! Предыдущий пример отрабатывает верно (у мистера g-al@yandex.ru), но результат абсолютно не нормален и он не учитывает вариант ответа в моем примере. 2. Я вообще считаю, что разницу надо мерить в жестко заданных еденицах: секундах, минутах, часах, днях, неделях - выраженные целым числом. 3. Хотя выражение, что господин SAA_ родился спустя X лет, Y месяцев и Z дней после рождения мусье vSkv, как бы тоже не лишено смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1993266]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 409ms |
0 / 0 |