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

Откуда:
Сообщений: 9
Здравствуйте! Нужно сделать выборку из таблицы, выбрать всех мужчин младше 50 лет.
В таблице два поля- дата рождения и пол. Не могу понять какое условие нужно использовать для вычисления возраста.

Заранее спасибо!
9 авг 21, 12:37    [22357188]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
Dima T
Member

Откуда:
Сообщений: 16063
lazlo
Не могу понять какое условие нужно использовать для вычисления возраста.

наверно такое
дата_рождения > ...


Сообщение было отредактировано: 9 авг 21, 12:43
9 авг 21, 12:52    [22357199]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
lazlo
Member

Откуда:
Сообщений: 9
Dima T,

При подобном условии в результирующую таблицу выводятся абсолютно все значения.
Возможно, я не совсем корректно выразился, прошу прощения за мою не компетентность, в foxpro работаю буквально неделю.
Само задание звучит так: "- написать SELECT (№1) для выборки всех мужчин в возрасте младше 50 лет".
Скриншот таблицы ниже. Подскажите как сделать такую выборку?

К сообщению приложен файл. Размер - 23Kb
9 авг 21, 13:13    [22357210]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
Dima T
Member

Откуда:
Сообщений: 16063
... where datar > gomonth(date(), -600) ...
9 авг 21, 13:34    [22357217]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
lazlo
Member

Откуда:
Сообщений: 9
Dima T,

SELECT from kadry WHERE (KADRY.POL="М" AND KADRY.DATAR > GOMONTH(DATE({^1985.02.02}));

При таком написании выдает ошибку, что нужно исправить?
9 авг 21, 13:46    [22357221]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
Dima T
Member

Откуда:
Сообщений: 16063
lazlo
Dima T,

SELECT from kadry WHERE (KADRY.POL="М" AND KADRY.DATAR > GOMONTH(DATE({^1985.02.02}));

При таком написании выдает ошибку, что нужно исправить?

Я разве так писал выше?
9 авг 21, 13:51    [22357225]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
Dima T
Member

Откуда:
Сообщений: 16063
так надо писать если дату знаешь
KADRY.DATAR > {^1985.02.02}
9 авг 21, 13:54    [22357231]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
lazlo
Member

Откуда:
Сообщений: 9
Dima T,

Извините, не заметил, что вставил не тот кусок в сообщение.
SELECT from kadry WHERE datar > GOMONTH(DATE(1983.02.03), - 600)
Вот при таком написании выдает ошибку
9 авг 21, 13:58    [22357234]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
PaulWist
Member

Откуда:
Сообщений: 2300
lazlo
Dima T,

Извините, не заметил, что вставил не тот кусок в сообщение.
SELECT from kadry WHERE datar > GOMONTH(DATE(1983.02.03), - 600)
Вот при таком написании выдает ошибку


SELECT * from kadry WHERE datar > GOMONTH(DATE(1983.02.03), - 600)
9 авг 21, 14:00    [22357236]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7919
lazlo
GOMONTH(DATE(1983.02.03), - 600)


1. В FoxPro в качестве разделителя параметров выступает символ запятой. Т.е. в функции Date() надо разделить числа запятыми
2. Константа типа Date - это обрамление в фигурных скобках.
2.1. Если после открывающей фигурной скобки сразу число стоит, то порядок следования года, месяца и дня определяется настройкой Set Date, что не очень удобно
2.2. Если после открывающей фигурной скобки ставится символ ^, то это указание на то, что дата указывается в формате ГГГГ.ММ.ДД

Т.е. Вам надо или так = Date(1983,02,03) - запятые внутри функции Date().
Или так {^1983.02.03} - константа типа Date

3. Функция GoMonth() к указанной в первом параметре дате прибавляет указанное количество месяцев. Если количество с минусом, то вычитает

600 месяцев = 600/12 = 50 лет

Если из 03.02.1983 вычесть 50 лет, то получим дату 03.02.1933.

Вы точно хотите выбрать людей, дата рождения которых после 1933 года? Т.е. 50 лет отсчитываете не от текущей даты, а от 1983 года?
9 авг 21, 15:24    [22357297]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
Dima T
Member

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

22357231
9 авг 21, 15:25    [22357298]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дате foxpro 9.0  [new]
lazlo
Member

Откуда:
Сообщений: 9
ВладимирМ,

Да, мне нужны люди дата рождения которых начинается с 1933 г.
Спасибо за разъяснения!
9 авг 21, 15:44    [22357314]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить