0

我正在寻找将从 mysql 返回的行中搜索最大时间值的脚本。Mysql返回的行如下:

(123, 'new', datetime.datetime(2013, 1, 2, 16, 6, 21))
(122, 'old', datetime.datetime(2012, 12, 3, 18, 08, 36))
(125, 'new', datetime.datetime(2012, 12, 13, 20, 18, 16))

我试过:

value = 0
for row in rows:
  if row[2] > value:
    value = row
print value

如果我们打印将显示的 row[2] 值

for row in rows:
 print row[2]

output: 2013-01-02 16:06:21
        2012-12-03 18:08:36
        2013-12-13 20:18:16
4

2 回答 2

2

Anders Johansson巧妙地回答了您的问题。

但是,您也可以避免一开始就在 Python 中执行此操作,只需请求该行数据即可。像这样的 SQL 语句:

SELECT DateTime FROM MyTable
ORDER BY CASE WHEN Status IS 'new' THEN 1 ELSE 0 END DESC, DateTime DESC LIMIT 1;

将实现您想要做的事情,并且只给您一个数据点。

更新:

SELECT mydate FROM MyTable
WHERE type=4
ORDER BY FIELD(status, 'new', 'waited', 'old'), mydate DESC
LIMIT 1;

SQLFiddle

于 2013-01-03T04:58:00.377 回答
1

您可以简单地使用:

print max(x[2] for x in rows)
于 2013-01-03T04:53:29.670 回答