2016-06-23 48 views
0

我正在使用psycopg2將csv文件中的值插入到postgres數據庫中。每次我從我的csv文件中讀取新行時,我需要將開始時間增加6個小時。我試圖用以下方法實現:未將時間添加到Python中的日期對象中

date_product_str = '2015-03-05 12:00:00' 
date_product = datetime.datetime.strptime(date_product_str, "%Y-%m-%d %H:00:00").date() 

date_valid = date_product 
interval = datetime.timedelta(hours=6) 

id_location=38 
in_file = open("inform_values.csv", "r") 


while True: 
     line = in_file.readline() 
     if not line: break 
     tokens = line.split(",") 
     for i in range (1, 140): 
       cur.execute("INSERT INTO inform_tseries_data_basin_proc_fcst_prob_flow (date_product, date_valid, id_location, id_member, value) VALUES (%s, %s, %s, %s, %s)", (date_product, date_valid, id_location, i, tokens[i])) 
       date_valid = date_valid + interval 
       print date_valid 
       conn.commit() 


cur.close() 
conn.close() 

但是這只是在每一步打印出2015-03-05。當我使我的間隔等於1天時:

interval = datetime.timedelta(days=1) 

它按預期增加一天。爲什麼它不能工作幾個小時?

回答

3

A date對象沒有小時,分鐘,秒或微秒的概念 - 只有年,月和日。在date + timedelta算術 - 正如文檔所說 - 「timedelta.secondstimedelta.microseconds被忽略。」

如果您需要計算小時數,則需要使用datetime對象。如果您從date_product初始化中刪除了跟蹤.date()提取器,您會得到哪些結果。

相關問題