我正在制作 parking 场系统,我在使用 SQL 数据库时遇到了一些困难。
我正在从 SQL 数据库中选择数据,但我需要正确获取时间才能将其用于进一步的计算。因此,例如我需要获取作为 VARCHAR
插入数据库的时间,也许坏事是我需要使用其他方法作为 TIME
,但这不是案件。我需要的是使用这一行 Started_Parking = row [3]
。这应该从数据库中获取时间,之后,我应该能够看到从汽车注册开始到当前时间的时差。通过这样做,我应该能够计算出“用户”应该为 parking 支付的金额。
所以简而言之,我只需要以某种方式从数据库中获取时间并将其用于计算。这是我的代码,编译时我也遇到错误:
Error while fetching data from PostgreSQL unsupported operand type(s) for -: 'datetime.datetime' and 'str'
try:
connection = psycopg2.connect(user="postgres",
password="Dziugas420",
host="127.0.0.1",
port="5432",
database="postgres")
cursor = connection.cursor()
postgreSQL_select_Query = "select * from vartotojai WHERE carnum=('%s')" % car_numb
cursor.execute(postgreSQL_select_Query) # PALEIST KOMANDA
vartotoju_data = cursor.fetchall() # READ DATA
print(" CAR DETAILS: ")
for row in vartotoju_data:
print("Current ID: ", row[0])
print("Car Number: ", row[1])
print("Parked on: ", row[3], "\n")
Pay_Time = datetime.datetime.now()
Started_Parking = row [3]
Prastovetas_Laikas = Pay_Time - Started_Parking
print(Prastovetas_Laikas)
# NOW LET'S CHECK IF THE TIME DIFFERENCE IS WORKING, LET'S SEE THE DIFFERENCE AFTER 20SECS.
time.sleep(20)
Pay_Time2 = datetime.datetime.now()
Prastovetas_Laikas2 = Pay_Time2 - Started_Parking
print(Prastovetas_Laikas2)`
**编辑
这是我这次用来导入数据库的代码:
Car_Reg_Time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
postgres_insert_query = """ INSERT INTO vartotojai (CARNUM, TIME, LAIKAS) VALUES (%s,%s, %s)"""
record_to_insert = (car_numb, Reg_Tikslus_Laikas, Car_Reg_Time)
!数据库中的laikas是汽车注册的时间,数据库中的时间是注入(inject)的时间。
最佳答案
Prastovetas_Laikas = Pay_Time - Started_Parking
不会工作
因为 Pay_Time
是 datetime.datetime
而 Started_Parking
是 str
您需要尝试使用datetime.strptime()
将Started_Parking
转换为正确的type
并且您想使用 str(mydate)
将它们作为 str
存储在您的 DB
中
关于python - Postgresql 和 Python : Selecting data (datetime) from SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805616/