powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Привязка запроса к системной дате.
31 сообщений из 31, показаны все 2 страниц
Привязка запроса к системной дате.
    #35913476
Ёклмн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем есть таблица с данными из нее нужно вырезать всех людей которым исполнилось ну скажем 50 лет. Причем данные практически каждый день обновляются, т.е. приходит новая табличка с людьми и нужно также на текущий день вырезать всех кому стукнуло. Мысль есть пока только одна чтоб запрос сверял дату рождения с текущей датой на компе отсчитывал н-количество лет и исключал человека из списка. А вот как реализовать не знаю. Подскажите?
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913481
Фотография simply
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT Таблица.ДатаРождения, Format(Date()-[ДатаРождения],'yy') AS Возвраст
FROM Таблица
WHERE (((Format(Date()-[ДатаРождения],'yy'))>= 50 ));
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913498
Ёклмн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
simply
Код: plaintext
1.
2.
SELECT Таблица.ДатаРождения, Format(Date()-[ДатаРождения],'yy') AS Возвраст
FROM Таблица
WHERE (((Format(Date()-[ДатаРождения],'yy'))>= 50 ));


Можно какой нить простенький пример??? Для полного понятия!!!
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913502
Фотография simply
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри запрос
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913645
simply
Код: plaintext
1.
2.
SELECT Таблица.ДатаРождения, Format(Date()-[ДатаРождения],'yy') AS Возвраст
FROM Таблица
WHERE (((Format(Date()-[ДатаРождения],'yy'))>= 50 ));

Дата рождения (dr)Дата определения возраста (dc)Format(dc-dr,'yy')29.02.196001.03.20104928.02.196229.02.20124906.04.195906.04.200949
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913713
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, DateDiff("yyyy",[ДатаРождения],[ДатаОпределенияВозраста]) AS Возраст
FROM ДатыРождения;

ДатаРожденияДатаОпределенияВозрастаВозраст29.02.196001.03.20105028.02.196229.02.20125006.04.195906.04.200950
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913721
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для топикстартера ответ соответственно выглядит так:
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, DateDiff("yyyy",[ДатаРождения],Date()) AS Возраст
FROM ДатыРождения
WHERE DateDiff("yyyy",[ДатаРождения],Date())>= 50 ;
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913755
AlexBessonov
Код: plaintext
1.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, DateDiff("yyyy",[ДатаРождения],[ДатаОпределенияВозраста]) AS Возраст
FROM ДатыРождения;

dr=#12/31/1959#
dc=#01/01/2009#
?DateDiff("yyyy",dr,dc)
50
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913861
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяющийdr=#12/31/1959#
dc=#01/01/2009#
?DateDiff("yyyy",dr,dc)
50
Прикольно!!! Ты где такие примеры находишь?
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913890
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, Int(DateDiff("m",[ДатаРождения],Date())/ 12 ) AS Возраст
FROM ДатыРождения
WHERE Int(DateDiff("m",[ДатаРождения],Date())/ 12 )>= 50 ;
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913891
AlexBessonovПроверяющийdr=#12/31/1959#
dc=#01/01/2009#
?DateDiff("yyyy",dr,dc)
50
Прикольно!!! Ты где такие примеры находишь?
HelpПри сравнении дат 31 декабря и 1 января следующего года функция DateDiff для интервала типа год ("yyyy") возвращает значение 1, хотя разница между датами составляет всего один день.
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913897
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хотя-бы в пределах месяца такая конструкция работать будет Хотя конечно не ожидал от этой функции такой "подлости"
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913902
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользуясь шаблоном AlexBessonov
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения
FROM ДатыРождения
WHERE (Date()-DateSerial(Year([ДатаРождения]) +  50 , Month([ДатаРождения]), Day([ДатаРождения]))> 0 
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913912
AlexBessonovА так?
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, Int(DateDiff("m",[ДатаРождения],Date())/ 12 ) AS Возраст
FROM ДатыРождения
WHERE Int(DateDiff("m",[ДатаРождения],Date())/ 12 )>= 50 ;

dr=#04/30/1959#
dc=#04/01/2009#
?Int(DateDiff("m",dr,dc)/12)
50
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35913959
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяющий
dr=#04/30/1959#
dc=#04/01/2009#
?Int(DateDiff("m",dr,dc)/12)
50
Да я уж следующим постом написал, что такая конструкция может определить только, что в этом месяце человеку исполняется 50 лет. О точности никакой речи нет.

mds_world, класс! Только наверное надо так:
Код: plaintext
WHERE (Date()-DateSerial(Year([ДатаРождения]) +  50 , Month([ДатаРождения]), Day([ДатаРождения]))>= 0 
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914035
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяющий:
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, IIf(([ДатаОпределенияВозраста]-DateSerial(Year([ДатаРождения])+ 50 ,Month([ДатаРождения]),Day([ДатаРождения])))>= 0 ,Year([ДатаОпределенияВозраста])-Year([ДатаРождения]),Year([ДатаОпределенияВозраста])-Year([ДатаРождения])- 1 ) AS Возраст
FROM ДатыРождения
WHERE ([ДатаОпределенияВозраста]-DateSerial(Year([ДатаРождения]) +  50 , Month([ДатаРождения]), Day([ДатаРождения])))>= 0 ;
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914050
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, ступил
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914103
mds_world, с учетом поправки AlexBessonov, изъянов не нашел . Однако все отвечающие пытались определить, хотя в ТЗ об этом как-то невнятно сказано, еще и возраст в годах. Вы же этот вопрос проигнорировали.
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914167
AlexBessonovПроверяющий:
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, IIf(([ДатаОпределенияВозраста]-DateSerial(Year([ДатаРождения])+ 50 ,Month([ДатаРождения]),Day([ДатаРождения])))>= 0 ,Year([ДатаОпределенияВозраста])-Year([ДатаРождения]),Year([ДатаОпределенияВозраста])-Year([ДатаРождения])- 1 ) AS Возраст
FROM ДатыРождения
WHERE ([ДатаОпределенияВозраста]-DateSerial(Year([ДатаРождения]) +  50 , Month([ДатаРождения]), Day([ДатаРождения])))>= 0 ;

Подсказка
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914205
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, IIf(([ДатаОпределенияВозраста]-DateSerial(Year([ДатаОпределенияВозраста]),Month([ДатаРождения]),Day([ДатаРождения])))>= 0 ,Year([ДатаОпределенияВозраста])-Year([ДатаРождения]),Year([ДатаОпределенияВозраста])-Year([ДатаРождения])- 1 ) AS Возраст
FROM ДатыРождения;
ДатаРождения ДатаОпределенияВозраста Возраст29.02.1960 01.03.2010 5028.02.1962 29.02.2012 5006.04.1959 06.04.2009 5030.04.1959 01.04.2009 4931.12.1959 01.01.2009 49
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914231
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подмастерье Подсказка
Сидел доводил до ума запрос, поэтому не видел ссылки на подсказку. Щас покопаюсь.
Но все-таки - как моя конструкция (спасибо огромное mds_world) для определения возраста? (как отсортировать уже было показано, поэтому делать не стал, а поэкспериментировал с вашими данными)
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914252
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственно, меня смущает как акц будет отрабатывать 29 февраля не високосного года. Но самое удивительное - что ошибки никакой не выдает. Я в легком шоке
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914370
AlexBessonovНо все-таки - как моя конструкция (спасибо огромное mds_world) для определения возраста?
Как будто работоспособная, но тяжеловесная. Можно, учитывая подсказку Подмастерье, ее несколько облегчить.
авторЕдинственно, меня смущает как акц будет отрабатывать 29 февраля не високосного года. Но самое удивительное - что ошибки никакой не выдает.
Можете еще больше удивиться
?DateSerial(2009,15,61)
30.04.2010
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914511
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяющий...учитывая подсказку Подмастерье, ее несколько облегчить...
Пытаюсь осмыслить. То есть при прибавлении логического значения True к целочисленному происходит уменьшение на единицу, а при False - значение не изменяется?
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914525
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяющийmds_world, с учетом поправки AlexBessonov, изъянов не нашел . Однако все отвечающие пытались определить, хотя в ТЗ об этом как-то невнятно сказано, еще и возраст в годах. Вы же этот вопрос проигнорировали.
Вообще-то в ТЗ вопроса такого не было.

Тем не менее.
Код: plaintext
1.
2.
3.
SELECT ДатаРождения, ДатаОпредВозраста, DateDiff("yyyy", ДатаРождения, ДатаОпредВозраста) + 
(ДатаОпредВозраста - DateSerial(Year(ДатаОпредВозраста), Month(ДатаРождения), Day(ДатаРождения)) <  0 ) AS Возраст
FROM ДатыРождения
WHERE ([ДатаОпредВозраста]-DateSerial(Year([ДатаРождения]) +  50 , Month([ДатаРождения]), Day([ДатаРождения])))>= 0 ;
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914554
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда так:
Код: plaintext
1.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, Int((DateDiff("m",[ДатаРождения],[ДатаОпределенияВозраста])+IIf(Day([ДатаРождения])>Day([ДатаОпределенияВозраста]),- 1 , 0 ))/ 12 ) AS Возраст
FROM ДатыРождения;

Но мой вариант мне больше понравился
P.S. Ну просто потому что он мой (хех, ну не совсем мой) - выстраданный
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35914574
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил, работает в принципе в запросе как и в VBA сложение с логической переменной:
Код: plaintext
1.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, Int((DateDiff("m",[ДатаРождения],[ДатаОпределенияВозраста])+(Day([ДатаРождения])>Day([ДатаОпределенияВозраста])))/ 12 ) AS Возраст
FROM ДатыРождения;
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35915227
AlexBessonovПытаюсь осмыслить. То есть при прибавлении логического значения True к целочисленному происходит уменьшение на единицу, а при False - значение не изменяется?
HelpЕсли значения типа Boolean преобразуются к другим типам данных, то False превращается в 0, а True в -1.
AlexBessonov
Код: plaintext
1.
2.
3.
SELECT ДатыРождения.ДатаРождения, ДатыРождения.ДатаОпределенияВозраста, 
Int((DateDiff("m",[ДатаРождения],[ДатаОпределенияВозраста])+
(Day([ДатаРождения])>Day([ДатаОпределенияВозраста])))/ 12 ) AS Возраст
FROM ДатыРождения;

Если применить целочисленное деление \12, то функция Int становится излишней.
В пылу определения возраста забыли о нуждах автора топика, которому, судя по его "живейшему" участию в обсуждении, это уже наверное совершенно не нужно.
ЁклмнВобщем есть таблица с данными из нее нужно вырезать всех людей которым исполнилось ну скажем 50 лет. Причем данные практически каждый день обновляются, т.е. приходит новая табличка с людьми и нужно также на текущий день вырезать всех кому стукнуло. Мысль есть пока только одна чтоб запрос сверял дату рождения с текущей датой на компе отсчитывал н-количество лет и исключал человека из списка.Для фильтрации можно использовать полученное выражение по определению возраста.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mds_worldВообще-то в ТЗ вопроса такого не было.
Проверяющий... хотя в ТЗ об этом как-то невнятно сказано...
Ёклмн... отсчитывал н-количество лет ...
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35915923
AlexBessonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПроверяющийЕсли применить целочисленное деление \12, то функция Int становится излишней...

Млин, сколько я оказывается еще не знаю
Проверяющий...которому, судя по его "живейшему" участию в обсуждении, это уже наверное совершенно не нужно.

Ну мне просто стал интересен сам процесс
...
Рейтинг: 0 / 0
Привязка запроса к системной дате.
    #35916695
Ёклмн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни небольшая поправка, вобщем допустим человеку 1 мая стукнет ровно 50 лет и получается в моммент обработки 1 мая он уже должен быть исключен из таблицы допустим чел. с д.р. 01.05.1959 г.р.а полтинник ему 01.05.2009г. и именно в этот день при обработке он должен быть исключен.
Вобщем блин как мне сказали даже если ему уже 1 секунда его 50-летия его не должно быть в списке. Вот блин, всем спасибо конечно, но столько примеров накидали что аж голова кругом пошла.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Привязка запроса к системной дате.
    #39134761
DedushkaPAKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отпишусь в некротопик. Родилось альтернативное решение точного определения количества полных лет.
Int(([Таблица].[ДатаСравнения]-[Таблица].[ДатаРождения])/365,25)
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Привязка запроса к системной дате.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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