|
|
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Вопрос: я недавно заморочку встретил: как посчитать количество дней между двумя датами. Нашел: есть встроенная функция, которая дает количество дней = DateDiff ("d",[Date1], [Date2]). Но меня жутко обламали: оказывается с 15/07/08 по 15/08/08 проходит всего 30 дней (ну так они считают, пусть в месяце будет 30 дней), а на самом деле эта функция считает, что 31. Вот и думаю, теперь, как 133 дня с 13/08/03 по 24/12/03 превратить в 4 мес. 11 дней. Может есть идейки, а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 16:37 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
в месяце надо считать зо дней, однако сколько дней между 15/07/08 по 15/09/08 - не важно. Важно, только то, что там - 2 месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 16:43 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Але, гараж? Первый аргумент у функции DateDiff совсем проспал? Вычисли разницу в месяцах, и домножь на сколько хочешь. Пусть у них хоть по 19 дней в месяце будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 16:49 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Таже функция с первым параметром "m" - DateDiff ("m",[Date1], [Date2]) - даст количество месяцев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 16:50 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
че-то не пойму я "про первй аргумент DateDıff" вот синтаксис согласно справке: =DateDiff("d", [OrderDate], [ShippedDate]) Uses the DateDiff function to display the variance in days between the values of the OrderDate and ShippedDate fields . Соответственно, поменяв d на m мы получим разницу в целых месяцах , совершенно верно, а только где оставшиеся дни взять-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 16:58 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Давно известная проблема вот решение (имхо очень и очень)\r Отсюда /topic/43001&hl=datediff\r \r Хам трамвайный \r Member \r \r если тебе \r нужжен возраст \r посчитать \r то табе \r DateDiff("yyyy",dtmBD, date())+(date()<dateserial(year(date()),month(dtmBD),day(dtmBD)))\r \r Думаю аналогично с месяцами не сложно будет написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 17:00 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
а только где оставшиеся дни взять-то? Посчитать. С помощью функции DateAdd добавить к начальной дате нужное количество месяцев (нормальных). Потом найти разницу (в днях) между конечной датой и посчитаной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 17:05 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Оба-на! Это уже что-то! Попробую, дружище...... э...э... как-то, прям,неудобно..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 17:06 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
вот что получается: например с 16/06/03 по 13/08/03 будет месяцев:2 дней:3 с 13/08/03 по 20/10/03 будет месяцев:2 дней:-7 как лучше поступить дальше: развивать геморрой дальше: например, если число дней-положительное, то от числа месяцев отнимаем 1, а от 30 отнимаем 3 получаем 27 дней. или есть более простые альтернативы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 18:37 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Сделал следующее: Working Days: DateDiff("d",[D1],[D2])- разница в днях между двумя датами Working: DateDiff("m",[D1],[D2])- разница в месяцах.... Pro: DateAdd("m",[Working],[D1]) к Дате1 прибавлено число полных месяцев до Даты2 res: DateDiff("d",[Pro],[D2]) разница в днях между этими двумя датами. получил следующее: 16/06/03-13/08/03 = 2 месяца (-3) дня, т.е. 1 мес. (30-3) дней 16/06/03-23/12/03 = 6 месяцев 7 дней т.е. если d первой даты больше d второй даты - появляется геморрой. Как от этого избавиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 10:37 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
появляется геморрой. Как от этого избавиться? Нет, ну ты думаешь мы тут все сертифицированные проктологи что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 10:59 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
res1: IIf([res]<0,(30-((-1)*[res])),[res]) mon: IIf([res]<0,([Working]-1),[Working]) неуклюже, зато РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! правда одно НО: если разница <0 надо условий бы еще добавить, но это уже лучше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 11:30 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
Я ведь и ссыслку уже дал и пример, неужели нужно готовое решение дать чтобы дошло. 1. Подсчет полных лет между датами d_beg и d_end (включая конечную дату) dim ld_end as Date ld_end=d_end+1 li_diff = DateDiff("yyyy", d_beg, ld_end) + (ld_end < DateSerial(Year(ld_end), Month(d_beg), Day(d_beg))) 2. Подсчет полных месяцев (включая конечную дату) dim ld_end as Date ld_end=d_end+1 li_diff = DateDiff("m", d_beg, ld_end) + (ld_end < DateSerial(Year(ld_end), Month(ld_end), Day(d_beg))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:28 |
|
||
|
Преобразование даты (число дней в число полных месяцев и дней)
|
|||
|---|---|---|---|
|
#18+
спасибо, Дружище за совет. я просто не силен, ну не силен и все, и твой совет и пример показался мне сложным, поэтому придумал свой (не без геморроя и все-таки потревожив участников форума пару раз :). Но цель достигнута - считает! Как говорит хоккеист Козлов "Мне по %№" как шайба залетает в ворота: щелчком, броском, рекошетом о конька - главное мне за это платят :) За отзывы и помощь благодарю всех! Всех с Наступающим! И да будет Вам СчастьиЕ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2003, 12:52 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32362311&tid=1677455]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 391ms |

| 0 / 0 |
