Выполнять операции с датой, полученной из базы данных mysql в python

#python #mysql #python-3.x

#python #mysql #python-3.x

Вопрос:

 import mysql.connector
import datetime
mydb = mysql.connector.connect(host="localhost", user="root", password="afif123", db="library")
mycursor = mydb.cursor()
date_query = '''SELECT Date from issued_book '''
mycursor.execute(date_query)
date_fetch = mycursor.fetchall()
date1 = date_fetch[0]
print(date1)
today = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(today)
diff = today - date1
print(diff)
 

я получаю ошибку, подобную этой

(datetime.datetime(2019, 4, 18, 15, 47, 51),)

Обратная трассировка (последний последний вызов): 2019-04-20 17:38:41

Файл «C:/Users/Desktop/lib/d.py «, строка 12, в diff = today — date1

Ошибка типа: неподдерживаемые типы операндов для -: ‘str’ и ‘tuple’

Процесс завершен с кодом выхода 1

Комментарии:

1. Вы получаете ошибки или неправильные выходные данные?

2. после извлечения даты из базы данных я получаю это (datetime.datetime(2019, 4, 18, 15, 47, 51),) теперь я должен преобразовать его в это 2019-04-20 00:25:19 но как?

3. Почему вы должны ее конвертировать? Вы получаете datetime.datetime из базы данных, теперь вы можете сделать today - date1 , если сегодня datetime.datetime.

4. дата (сегодня) — дата (дата1) можете ли вы попробовать так? это должно работать

Ответ №1:

Поиск разницы между двумя датами — это всего лишь вопрос вычитания двух объектов datetime, например

 import datetime

date1 = datetime.datetime(2019, 4, 18, 15, 47, 51)
date2 = datetime.datetime.now()

print(date2-date1)
#1 day, 20:58:11.972530
 

Комментарии:

1. я получаю такую дату (datetime.datetime(2019, 4, 18, 15, 47, 51),) и после вычитания его с текущей датой пользовательский интерфейс (pyqt) останавливается

2. Это означает, что что-то не так в том, как вы работаете с датами. Удалите часть пользовательского интерфейса и просто запустите код, который обрабатывает дату, чтобы изолировать проблему

3. (datetime.datetime(2019, 4, 18, 15, 47, 51),) Обратная трассировка (последний последний звонок): 2019-04-20 17:38:41 Файл «C:/Users/shaik/Desktop/lib/d.py «, строка 12, в <module> diff = today — date1 Ошибка типа: неподдерживаемые типы операндов для -: Процесс ‘str’ и ‘tuple’ завершен с кодом выхода 1

4. Убедитесь, что today и date1 имеют один и тот же тип данных, datetime.datetime

5. Пожалуйста, подумайте о том, чтобы принять мой ответ, если он помог вам @AfifShaikh 🙂

Ответ №2:

хорошо, это помогло мне

 import mysql.connector
import datetime
mydb = mysql.connector.connect(host="localhost", user="root", password="afif123", db="library")
mycursor = mydb.cursor()
date_query = '''SELECT Date from issued_book '''
mycursor.execute(date_query)
date_fetch = mycursor.fetchall()
date1 = date_fetch[0]
print("date1:", date1)
d1 = date1[0]
print("a1:", d1)
today = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
t1 = datetime.datetime.strptime(today, "%Y-%m-%d %H:%M:%S")
print("today:", today)
diff = t1 - d1
print("diff:", diff)
 

ВЫХОДНАЯ
дата1: (datetime.datetime(2019, 4, 18, 15, 47, 51),)

a1: 2019-04-18 15:47:51

сегодня: 2019-04-21 12:00:47

разница: 2 дня, 20:12:56