两个日期之间的差异问题MySQL / Python

时间:2017-01-27 21:35:28

标签: python mysql datetime

我想在 Python 2.7 中获取两个日期之间的时差,其中存储日期并从 MySQL 中检索日期。

运行以下代码:

import datetime
import time
from time import sleep
import MySQLdb as mdb

connection = mdb.connect('localhost', 'root', 'pwd', 'mydatabase');
cursor = connection.cursor()

TimeFormat = '%Y-%m-%d %H:%M:%S'

#Insert times and type of event into database
with connection:
    #First event
    Now=datetime.datetime.now()
    Timewhen1=Now.strftime(TimeFormat)
    print "Start time", Timewhen1
    Type="1"
    cursor.execute('INSERT INTO LogEvent (Timewhen, Type) VALUES (%s, %s)',(Timewhen1,Type))
    sleep(1) #Real time will be unknown, seconds to days

    #Second event
    Now=datetime.datetime.now()
    Timewhen2=Now.strftime(TimeFormat)
    print "Stop time", Timewhen2
    Type="0"
    cursor.execute('INSERT INTO LogEvent (Timewhen, Type) VALUES (%s, %s)',(Timewhen2,Type))

#Get time difference
with connection: 
    cursor.execute("SELECT Timewhen FROM LogEvent ORDER BY ID DESC LIMIT 0,1")
    result=cursor.fetchone()

    cursor.execute("SELECT Timewhen FROM LogEvent ORDER BY ID DESC LIMIT 1,1")
    result2=cursor.fetchone()

diff=result2-result
print "Diff", diff

得到以下结果:

  

TypeError:不支持的操作数类型 - :' tuple'和'元组'

result / result2的格式为(datetime.datetime(2017, 1, 27, 22, 25, 39),)

猜猜我用元组/字符串格式做错了什么。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

看起来cursor.fetchone()返回记录,该记录显示为字段元组。 在你的情况下,你只有一个字段(Timewhen),所以你有一个元素的元组。

这样,要获取实际值,您需要从元组中提取此元素,因此diff = result2[0] - result[0]应该可以正常工作。

答案 1 :(得分:0)

resultresult2是表示从查询返回的整行的元组。在这种情况下,它们包含单个元素,因为您的查询只包含一列。您可以使用[]运算符提取此值。 E.g:

result=cursor.fetchone()[0]