1 / 1 / 0
Регистрация: 27.09.2010
Сообщений: 26

Как сравнить даты в Access

03.12.2006, 04:31. Показов 13315. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно делать выберку из ДБ похоже этой:
select * from table where date1 between '10/10/2006' and '11/11/2006 '.
Date поля в таблице хранятся в text формате. Но выберка как то не правильно делается. Я новичок в MS Access.
Где ошибка?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2006, 04:31
Ответы с готовыми решениями:

Как сравнить даты и вывести просрочки
Доброго дня, Гуру:) Есть две даты и ФИО. Возможно ли сделать так, чтобы при нажатии кнопки "открыть форму" и открытии формы...

Сравнить поля даты в Access
Здравствуйте! Нужно сравнить два поля даты - одно из таблицы, другое с формы, которая на этой таблице основана. Пишет что...

VBA Access. Сравнить две даты
Как проверить дату, на вхождение в диапазон? Пробовал так: strtimef = CStr(Me.date_fie) + " " + CStr(Me.time_fie) ...

30
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
14.12.2017, 16:51
Студворк — интернет-сервис помощи студентам
where F = 'макаров'

например с таким условием
1
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 12
14.12.2017, 16:53
Цитата Сообщение от Capi Посмотреть сообщение
А данные те, что были в первоначальном вопросе, или же другие?
У меня, напоминаю, получается именно Макаров Макар Макарович 04.04.2004.

Фамилии в самой таблице конечно отличаются, там 12 фамилий, но суть от этого не меняется ... в таблице есть
Макаров Макар Макарович 04.04.2004 и Макаров Макар Макарович 03.03.2003
И у меня никак не получается выделить этого отсутствующего Макаров Макар Макарович 04.04.2004
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
14.12.2017, 17:03
Цитата Сообщение от BenderLog Посмотреть сообщение
Фамилии в самой таблице конечно отличаются, там 12 фамилий, но суть от этого не меняется
Сделайте сначала на тех тестовых данных, которые выкладывали.
Сообщите результат.
Потом будем двигаться дальше.
А то уже две страницы топчемся на месте.
0
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 12
14.12.2017, 17:06
Цитата Сообщение от alvk Посмотреть сообщение
where F = 'макаров'
например с таким условием
Очень странно ...

Select Проба.*
FROM Проба
where F = 'макаров'

Система мне выдает только Макаров Макар Макарович 03.03.2003
второго с датой 04.04.2004 не показывает ...
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
14.12.2017, 17:18
BenderLog,

Еще дополню свой запрос на случай наличия в обеих таблицах одинаковых групп нескольких записей
для полных тезок с разными датами рождения.
Добавить условие:
SQL
1
WHERE NOT (Test.O & Test.I & Test.F & Test.Born IN (SELECT O & I & F & Born FROM ANY_Person))
1
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 12
14.12.2017, 17:30
Цитата Сообщение от Capi Посмотреть сообщение
Сделайте сначала на тех тестовых данных, которые выкладывали.
Сообщите результат.
Потом будем двигаться дальше.
А то уже две страницы топчемся на месте.
Сделал 2 таблицы с идентичными названиями и данными что писал в своем первом запросе ...

SELECT Test.*
FROM Test INNER JOIN ANY_Person ON
(Test.Born<>ANY_Person.Born) AND (Test.O=ANY_Person.O) AND (Test.I=ANY_Person.I) AND (Test.F=ANY_Person.F)

Система выдала мне 8 полей с повторяющимися ФИО и датой рождения

После добавления строчки

WHERE NOT (Test.O & Test.I & Test.F & Test.Born IN (SELECT O & I & F & Born FROM ANY_Person))

Выдает мне 2 записи
Макаров Макар Макарович 04.04.2004 ))))))))))))))

Ну благо прогресс наметился, буду думать дальше в этом направлении Спасибо Вам огромное
Если что надеюсь на повторную помощь!)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
14.12.2017, 17:37
Напоминаю опять про кнопку +1Спасибо. Она как раз сделана для
Цитата Сообщение от BenderLog Посмотреть сообщение
Спасибо Вам огромное
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
14.12.2017, 17:42
Цитата Сообщение от BenderLog Посмотреть сообщение
Выдает мне 2 записи
Макаров Макар Макарович 04.04.2004 ))))))))))))))
Значит, тезок с разными датами в таблице ANY_Person двое.
Добавьте в запрос DISTINCT:
SQL
1
SELECT DISTINCT ТТ_Test.*
Да, и прислушайтесь к alvk по поводу кнопки "Спасибо".)))
1
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 12
14.12.2017, 18:21
Цитата Сообщение от Capi Посмотреть сообщение
Добавьте в запрос DISTINCT:
УРАААААА ЗАРАБОТАЛО!)))))
Только думает почему-то очень и очень долго ...
кстати а сколько такой запрос будет обрабатываться если сравнить таблицу с 2000 ФИО
с таблицей более чем в 500 000 ФИО?

ну да Бог с ним, это уже лирика
Теперь осталось найти консоль для MS SQL и я стану работником месяца ... даже наверно года!))) правда уходящего!)))

Для тех кто не хочет листать всю тему целиком:
По моему запросу получилась вот такая вот формула

SELECT DISTINCT Test.*
FROM Test INNER JOIN ANY_Person ON
(Test.Born<>ANY_Person.Born) AND (Test.O=ANY_Person.O) AND (Test.I=ANY_Person.I) AND (Test.F=ANY_Person.F)
WHERE NOT (Test.O & Test.I & Test.F & Test.Born IN (SELECT O & I & F & Born FROM ANY_Person))

Долго думает, но работает!)

P.S.
Кстати, я заметил, если убрать DISTINCT то запрос исполняется молниеносно ... а вот если обратно добавить то на сравнение таблицы в 13 записей с таблицей в 300 записей тратится почти минута!
Почему так?
0
Модератор
Эксперт MS Access
6231 / 2909 / 708
Регистрация: 12.06.2016
Сообщений: 7,839
14.12.2017, 18:31
Цитата Сообщение от BenderLog Посмотреть сообщение
Кстати, я заметил, если убрать DISTINCT то запрос исполняется молниеносно ... а вот если обратно добавить то на сравнение таблицы в 13 записей с таблицей в 300 записей тратится почти минута
Потому, что ищутся совпадения, чтобы их исключить.
Наверное, мой запрос пока не идеален, сделан быстро - просто, чтобы общую идею ухватить.
Надо будет подумать над улучшением.
Может, завтра.

И вариант с Not ... In (....) очень медленный.
Надо что-то другое придумать.
1
0 / 0 / 0
Регистрация: 14.12.2017
Сообщений: 12
14.12.2017, 18:39
В общем я тут поэкпериментировал и понял ... та таблица которую я делал для сравнения изначально была некорректно сохранена, поэтому получаемого результата не достиг.

Я вновь переделал таблицу и все встало на свои места ... проверка идет молниеносно и точно!
Вот формула (даже в режиме конструктора):

SQL
1
2
3
4
5
6
7
8
9
10
SELECT Test.*
FROM Test LEFT JOIN ANY_Person
 ON (Test.Born=ANY_Person.Born)
 AND (Test.O=ANY_Person.O)
 AND (Test.I=ANY_Person.I)
 AND (Test.F=ANY_Person.F)
WHERE (((ANY_Person.F)IS NULL)
 AND (((ANY_Person.I)IS NULL)
 AND (((ANY_Person.O)IS NULL)
 AND (((ANY_Person.Born)IS NULL));
P.S.
Все равно всем огромное спасибо!)
Так или иначе проблема решена и по сути я в ней сам был виноват!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2017, 18:39

Как сравнить даты в VB?
Уважаемые мозги! Подскажите пожалуйста, каким образом можно выбрать данные за определенный месяц и год? Если ввожу в один TextBox месяц...

как сравнить даты?
в таблицу в колонку начало отпуска и конец отпуска вводятся даты.....необходимо определить к какому кварталу относятся эти даты,...

как сравнить даты ?
допустим есть переменные (даты): a = &quot;08/12/2005&quot; b = &quot;08/12/2008&quot; как определить раньше-позже?

Как сравнить даты?
У меня есть дата в формате dd.mm.YYYY, как мне сравнить эту дату с текущей?

Как сравнить даты?
Есть даты: 2012-05-26 11:15:00 2012-05-26 19:15:00 2012-05-26 19:15:00 Нужно вывести из дат записи, только за последние сутки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru