powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / даты
13 сообщений из 13, страница 1 из 1
даты
    #34925985
Olga_Volosuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть две даты Дата1 и Дата2, как проверить что разница между ними 14 лет
...
Рейтинг: 0 / 0
даты
    #34926042
Посмотерть разницу между ними. Или есть опасения в невозможности из даты вычесть дату? Нетрудно и проверить.
...
Рейтинг: 0 / 0
даты
    #34926054
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите поиск по данному форуму - приводились довольно красивые решения этой непростой задачи (в комплексе - количество лет, месяцев, дней)...
...
Рейтинг: 0 / 0
даты
    #34926077
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:
Код: plaintext
int((Дата1 - Дата2) /  365 . 25 ) =  14 

Вопрос не совсем корректный. Что конкретно будем считать разницей в 14 лет.
...
Рейтинг: 0 / 0
даты
    #34926263
Olga_Volosuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
етсь дата рождения, надо выбрать тех, кому не больше 14 лет на дату запроса
...
Рейтинг: 0 / 0
даты
    #34926298
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sele * from table where (date()-date_r)>=365*14
...
Рейтинг: 0 / 0
даты
    #34926311
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dagsele * from table where (date()-date_r)>=365*14
только 365.25, т.к. високосные года еще бывают.
...
Рейтинг: 0 / 0
даты
    #34926314
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что считать возрастом в 14 лет?

Это не глупый вопрос, а самый что ни на есть конкретный. FoxPro может точно рассчитать разницу в днях между датами. Но ответить на вопрос о разнице в годах и месяцах - не может в принципе. По той простой причине, что термины "месяц" и "год" - это не абсолютные, а относительные величины. Каждый понимает под этим что-то свое. Вот какой смысл Вы вкладываете в эти понятия, такой ответ и получаете.

Ну, например, если человек родился 29 февраля в високосный год. День рождения в не високосный год - это какое число будет? 28 февраля или 1 марта? А года как складывать будем? Возьмем сразу конечну дату или по 365 дней откладывать от дня рождения?

"Вытрясите" из постановщика задачи что считать 1 годом в днях. И именно в днях. После этого можно что-то советовать.
...
Рейтинг: 0 / 0
даты
    #34926317
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз в поиск - решение приводилось...
...
Рейтинг: 0 / 0
даты
    #34926577
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в фоксе прекрасная функция GOMONTH, которая позволяет "скакать" по месяцам (что делает вопрос о "високосности" не актуальным), которая и поможет в данном случае:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
* конец диапазона
ldEnd = date()
* начало диапазона
ldStart = gomonth(m.ldEnd, - 14 * 12 )

* если дата рождения попадает в диапазон ldStart, ldEnd значит человеку не более  14  лет:

select * ;
from person ;
where birthday between ldStart and ldEnd
...
Рейтинг: 0 / 0
даты
    #34926585
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЧто считать возрастом в 14 лет?

Это не глупый вопрос, а самый что ни на есть конкретный. FoxPro может точно рассчитать разницу в днях между датами. Но ответить на вопрос о разнице в годах и месяцах - не может в принципе. По той простой причине, что термины "месяц" и "год" - это не абсолютные, а относительные величины. Каждый понимает под этим что-то свое. Вот какой смысл Вы вкладываете в эти понятия, такой ответ и получаете.

Ну, например, если человек родился 29 февраля в високосный год. День рождения в не високосный год - это какое число будет? 28 февраля или 1 марта? А года как складывать будем? Возьмем сразу конечну дату или по 365 дней откладывать от дня рождения?

"Вытрясите" из постановщика задачи что считать 1 годом в днях. И именно в днях. После этого можно что-то советовать.

Здесь как раз ничего не надо "вытрясывать", поскольку переходить ко дням в году вообще нет никакой нужды.
...
Рейтинг: 0 / 0
даты
    #34926828
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков ВладимирМ...
Ну, например, если человек родился 29 февраля в високосный год. День рождения в не високосный год - это какое число будет? 28 февраля или 1 марта? ...
Здесь как раз ничего не надо "вытрясывать", поскольку переходить ко дням в году вообще нет никакой нужды.
29 февраля тут немного нагадит. Логичней считать что в невисокосные года день рождения 1 марта, т.е. после 28-го. Так для родившегося 28.02.92:
gomonth(date(1992,2,29), 14*12) = 28.02.2006
и для 29.02.92
gomonth(date(1992,2,28), 14*12) = 28.02.2006

Хотя первому 28.02.2006 уже 14 а второму еще 13. Поэтому надо прописать однозначный алгоритм расчета в ТЗ, чтоб потом не доказывать свою логику.
...
Рейтинг: 0 / 0
даты
    #34926942
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChЕще раз в поиск - решение приводилось...
OK.

Вот варианты решений (использовал поиск по данному форуму):
вариант 1 от ВладимираМ
вариант2 от -=AlexiS=-
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]