@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)')
Как решить эту проблему?
  • Вопрос задан
  • 604 просмотра
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
Вы не можете в таком выражении использовать строку.
change_date BETWEEN  CONVERT(datetime, '2020/11/03 10:00:00') AND CONVERT(datetime, '2020/12/04 22:00:00')

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

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

Похожие вопросы