【发布时间】:2012-10-11 06:28:06
【问题描述】:
我有以下代码总是从数据库中获取日期,然后它会检查当前时间是否等于数据库中的时间。它没有说拍卖开始的问题!就像它应该的那样。
所以我猜这个 if 语句是不正确的。有人可以帮助我朝着正确的方向前进吗?谢谢!
def startAuctionServer():
global cursor
sql = ("SELECT Auction_StartDate closestDate FROM Auctions "
"WHERE DATE(Auction_StartDate) > '2012-10-09' "
"ORDER BY Auction_StartDate ASC LIMIT 1")
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
auction_startdate = row[0]
print "AUCTION: %s" % auction_startdate
now = datetime.datetime.now()
print now.strftime("%Y-%m-%d %H:%M:%S")
if auction_startdate == now.strftime("%Y-%m-%d %H:%M:%S"):
# let the auctions begin
print "Auction begins!"
reactor.stop()
return
else:
reactor.callLater(0.05, startAuctionServer)
print "Auction Server Started"
reactor.callLater(0, startAuctionServer)
reactor.run()
已解决
我知道我需要做什么。我使用 str 来制作值字符串,然后将它们拆分为空格。
我将 if 更改为:
if str(now.strftime("%Y-%m-%d %H:%M:%S")).split() == str(auction_startdate).split()
现在我有了我正在做的事情的基础,现在我可以开始我的项目了。
谢谢你们!
【问题讨论】:
-
您数据库中的日期完全 与当前时间精确匹配是不是有点不太可能。您可能是要比较日期,而不是日期时间?
-
不,日期和时间。它也没有比较毫秒。比如 2012-10-27 14:30:00 然后它会检查当前时间是否等于那个时间。
-
如果你寻找
-
您是否查看过数据库如何为您的
auction_startdate对象提供服务?我假设它是一个字符串——它看起来像什么?也许问题只是零填充不一致? -
@Alec:重点是,除非执行if语句时正好是2012-10-27 14:30:00,否则比较会是假的。查询(使用 DATE(Auction_StartDate))和您的变量名称都强烈建议您需要使用日期(而不是日期时间)。
标签: python mysql twisted mysql-python