2014-11-21 97 views
0

我正在使用python 2.7.2。我試圖得到兩個日期變量之間的差異,這是由MySQL查詢導致的。如何獲得python中兩個日期變量之間的小時差異

#!/usr/local/python2.7.2/bin/python          
import sys                
import datetime               
from datetime import datetime            
import MySQLdb               
import MySQLdb.cursors             
# Inventory db connection 
db1=MySQLdb.connect(host = "localhost",user = "root",passwd ="*****",db="inventory") 
cursor=db1.cursor()                     
cursor.execute("select max(date_created) from inventory.inventory_details;")           
inv=cursor.fetchall() 

# Remote Inventory db connection 
db2=MySQLdb.connect(host = "remotehost",user = "root",passwd ="*****",db="inventory") 
cursor=db2.cursor()                     
cursor.execute("select max(date_created) from inventory.inventory_details;")           
remote_inv=cursor.fetchall() 

print inv 
print remote_inv 

d1 = str(inv) 
d2 = str(remote_inv) 
diff = d2-d1 
diff_minutes = diff.seconds/60 

這裏的 「INV」 輸出爲((datetime.datetime(2014,11,20,13,54,7),),)remote_inv的 輸出爲((datetime.datetime(2014年,11 ,20,19,17,2),),)

我需要轉換爲格式「%Y-%m-%d%H:%M:%S」。我嘗試使用str()並沒有幫助。

只是幫助我得到兩個MySQL日期變量的區別..我只是想知道這是否可以在python中執行。

在此先感謝。

+1

diff.total_seconds()'。我不明白格式是如何獲得小時 – 2014-11-21 09:39:48

回答

0

兩個invremote_inv的元組的元組,你可以從你的輸出看。這是因爲fetchall獲取元組中的所有行;並且該元組中的每個元素本身就是所有列的元組。因爲你只有一個行,該行一列,你應該使用fetchone而非fetchall,並獲得的第一要素:如果差值可超過1天,你應該使用`

inv = cursor.fetchone()[0] 
remote_inv = cursor.fetchone()[0] 
diff = remote_inv - inv 
diff_minutes = diff.total_seconds()/60 
+0

啊..這就是這個伎倆......感謝幫助我...... – 2014-11-21 10:20:56

0

strftime

例如:

import datetime 
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M") 
+0

我嘗試使用strftime但它說「AttributeError:'元組'對象沒有屬性'strftime'」...在這裏我導入日期時間,但它仍然不是工作...... – 2014-11-21 10:22:32

相關問題