Задать вопрос
@Chudo_10

Как задать временной промежуток в SQL запросе?

Это моя первая работа с бд. У меня еть 2 таблицы, я хочу объеденить их join-ом и задать временной промежуток. Вот мой код:
import pyodbc
import pandas as pd

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\logs\dataB.mdb;')
cursor = conn.cursor()
sql = "select report, change_date, user_, display_name from history INNER JOIN User_ ON history.user_=User_.id WHERE change_date between '2020/11/03 10:00:00' and '2020/12/04 22:00:00'"

df = pd.read_sql(sql, conn)


Я хочу эти даты получить от пользователя, но у меня даже так не получается. Я хочу желательно отбросить конкретные часы в запросе и оставить только дату. Без даты и времени все отлично работает, а с датой выдает данную ошибку:
Execution failed on sql 'select report, change_date, user_, display_name from history INNER JOIN User_ ON history.user_=User_.id WHERE change_date between '2020/11/03 10:00:00' and '2020/12/04 22:00:00'': ('22018', '[22018] [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. (-3030) (SQLExecDirectW)')
Как решить эту проблему?
  • Вопрос задан
  • 625 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
Вы не можете в таком выражении использовать строку.
change_date BETWEEN  CONVERT(datetime, '2020/11/03 10:00:00') AND CONVERT(datetime, '2020/12/04 22:00:00')

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

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 09:18
10000 руб./за проект
31 янв. 2025, в 08:29
1000 руб./в час
31 янв. 2025, в 06:03
9999999 руб./за проект