Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.02.2018
Сообщений: 3

Не работает выборка по дате

08.02.2020, 13:44. Показов 1640. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица в БД, которая содержит два поля: Начало дня и Конец дня - Оба имеют длинный формат даты
Задача: выбрать строки из этой таблицы по введенной дате, так, чтобы введенная дата была между Началом и Концом

Отчасти с задачей справился, но спустя время обнаружил проблему: Если строка имеет, к примеру, Начало - 31.01.2020, а Конец - 01.02.2020, то при вводе даты 31.01.2020, строка не выбирается.

Код того, что имею:
SQL
1
2
3
SELECT Информация.ID_Информации, Информация.Начало, Информация.Название, Информация.Конец, Информация.Описание, Информация.СУПлюс, Информация.СУМинус 
FROM Информация 
WHERE (@Дата >= FORMAT(Информация.Начало, 'Short Date') AND @Дата <= FORMAT(Информация.Конец, 'Short Date')) AND Информация.Логин = @Логин
Также пробовал заменить на Between:
SQL
1
2
3
SELECT Информация.ID_Информации, Информация.Начало, Информация.Название, Информация.Конец, Информация.Описание, Информация.СУПлюс, Информация.СУМинус 
FROM Информация 
WHERE (@Дата BETWEEN FORMAT(Информация.Начало, 'Short Date') AND FORMAT(Информация.Конец, 'Short Date')) AND Информация.Логин = @Логин
Но в этом случае выводит строку с Началом - 31.01.2020 и Концом - 01.02.2020 какую дату бы я не ввел
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2020, 13:44
Ответы с готовыми решениями:

Не работает выборка по дате
Нужно сделать выборку за текущий месяц, прошлый и за год. Делаю так: private void button1_Click(object sender, EventArgs e) ...

Не работает выборка по дате
Привет всем! Помогите пожалуйста с условием выборки: в БД есть таблица пользователей, есть поле RegisterTime. мне нужно выбрать...

Не работает выборка по дате
Добрый день, у меня не работают параметры начала и конца даты при формировании отчёта, помогите найти ошибку. Вот сам код запроса: ...

7
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
08.02.2020, 14:01
А FORMAT то зачем? Вы текст сравниваете с текстом, а не даты.
1
0 / 0 / 0
Регистрация: 02.02.2018
Сообщений: 3
08.02.2020, 14:08  [ТС]
Оу, а как получить только дату из полной даты (которая со временем)?
0
 Аватар для VinniPuh
9129 / 6131 / 593
Регистрация: 27.03.2013
Сообщений: 19,983
08.02.2020, 14:18
Цитата Сообщение от 1Beasty Посмотреть сообщение
...как получить только дату из полной даты...
В запросе, открытом в режиме конструктора, в свободном поле -
SQL
1
ДатаБезВремени: Format([ИмяПоляГдеДатаВремя];"dd.mm.yyyy")
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
08.02.2020, 14:23
SQL
1
2
3
4
PARAMETERS @Дата DateTime;
SELECT Информация.ID_Информации, Информация.Начало, Информация.Конец
FROM Информация
WHERE CLng(@Дата) BETWEEN CLng(Начало) AND CLng(Конец)
0
0 / 0 / 0
Регистрация: 02.02.2018
Сообщений: 3
08.02.2020, 14:34  [ТС]
Цитата Сообщение от VinniPuh Посмотреть сообщение
В запросе, открытом в режиме конструктора, в свободном поле -
Также не выбирает, если Начало - 31.01.2020 и Конец - 01.02.2020

Цитата Сообщение от ltv_1953 Посмотреть сообщение
PARAMETERS @Дата DateTime;
SELECT Информация.ID_Информации, Информация.Начало, Информация.Конец
FROM Информация
WHERE CLng(@Дата) BETWEEN CLng(Начало) AND CLng(Конец)
Этот способ в том случае где две строки должен выбрать (есть две строки: начало и конец, точнее их даты, одинаковые), выбирает только одну

Посмотрев на имеющиеся функции даты и времени пришел к такому, достаточно длинному, но, вроде бы, рабочему способу
SQL
1
2
3
4
5
SELECT Информация.ID_Информации, Информация.Начало, Информация.Название, Информация.Конец, Информация.Описание, Информация.СУПлюс, Информация.СУМинус
FROM Информация
WHERE(YEAR(@Дата) BETWEEN YEAR(Информация.Начало) AND YEAR(Информация.Конец) AND
             MONTH(@Дата) BETWEEN MONTH(Информация.Начало) AND MONTH(Информация.Конец) AND
             DAY(@Дата) BETWEEN DAY(Информация.Начало) AND DAY(Информация.Конец)) AND Информация.Логин = @Логин
Но в любом случае всем спасибо за помощь, особенно за сообщение о том, что я сравниваю строки, а не даты)
0
 Аватар для VinniPuh
9129 / 6131 / 593
Регистрация: 27.03.2013
Сообщений: 19,983
08.02.2020, 14:39
Цитата Сообщение от 1Beasty Посмотреть сообщение
...Также не выбирает...
Вы бы не стеснялись, а заархивированный пример приложили, а то косяки от многих факторов зависят и вам уже вчера бы уже всё подправили.
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
08.02.2020, 14:45
Лучший ответ Сообщение было отмечено 1Beasty как решение

Решение

Цитата Сообщение от 1Beasty Посмотреть сообщение
тот способ в том случае где две строки должен выбрать (есть две строки: начало и конец, точнее их даты, одинаковые), выбирает только одну
Да, может округлить. Замените CLng на Int, которая отбрасывает дробную часть. А так все корректно, ибо дата - есть целая часть даты/времени, которая реально хранится как Double.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2020, 14:45
Помогаю со студенческими работами здесь

Сортировка ADOTable по дате. Выборка из таблицы по дате
Доброго вечера! Пытался решить проблему сам - не получилось. Тезисно: имеется программа, сделанная в c++ Builder; из бд Accsess в программе...

Выборка по дате
Добрый день есть таблица со списком сотрудников в котором указано ФИО место работы и дату вступления на должность (дд.мм.гг) как мне...

Выборка по дате
Добрый день, у меня возникла проблема с выборкой по дате а именно: Иметься таблица в которой ФИО ИНН могут повторяться но при этом у них...

Выборка по дате
Интересует такой вопрос. Как сделать выборку данных по дате? на пример что было неделю назад если отталкиваться от сегодня что было в...

Выборка по дате
Всем привет! Нужна выборка по сегодняшней и вчерашней дате. как? То есть если писать по смыслу так: SELECT * FROM concil WHERE...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru