【发布时间】:2015-05-09 01:08:36
【问题描述】:
我正在尝试获取一个月的第一条和最后一条记录。在 phpmyadmin 我得到正确的结果。在python中我没有。事实上,python 为这两个查询返回相同的行。第一个数字是行的表主键。
SELECT * FROM mcs WHERE time_stamp < DATE_ADD( DATE_ADD( LAST_DAY( NOW( ) ) , INTERVAL 25 HOUR ) , INTERVAL -2 MONTH) AND wot_id = 1010965979 LIMIT 1
((838831, '1010965979', datetime.datetime(2015, 3, 6, 22, 0), Decimal('444.88'), Decimal('0.00')),)
SELECT * FROM mcs WHERE time_stamp < DATE_ADD( DATE_ADD( LAST_DAY( NOW( ) ) , INTERVAL 24 HOUR ) , INTERVAL -1 MONTH)AND wot_id = 1010965979 LIMIT 1
((838831, '1010965979', datetime.datetime(2015, 3, 6, 22, 0), Decimal('444.88'), Decimal('0.00')),)
phpmyadmin 为第一个查询显示此行,
839037 1010965979 2015-04-01 00:00:00 437.36 0.00
这是第二个:
953868 1010965979 2015-04-30 23:00:00 479.67 0.00
使用 MySQLdb 和 python 3
怎么了?这是 MySQLdb 中的错误吗?我不这么认为,因为它只是将一个 SQL 字符串传递给 mysql
编辑:
我在使用 unix 时间时遇到了同样的问题。为什么相同 SQL 的复制和过去在同一个数据库上给出不同的结果?
time.struct_time(tm_year=2015, tm_mon=4, tm_mday=1, tm_hour=2, tm_min=18, tm_sec=51, tm_wday=2, tm_yday=91, tm_isdst=-1)
1427846400
SELECT * FROM mcs WHERE time_stamp < FROM_UNIXTIME(1427846400) AND wot_id = 1010965979 LIMIT 1
((838831, '1010965979', datetime.datetime(2015, 3, 6, 22, 0), Decimal('444.88'), Decimal('0.00')),)
time.struct_time(tm_year=2015, tm_mon=5, tm_mday=1, tm_hour=2, tm_min=18, tm_sec=51, tm_wday=4, tm_yday=121, tm_isdst=-1)
1430438400
SELECT * FROM mcs WHERE time_stamp < FROM_UNIXTIME(1430438400) AND wot_id = 1010965979 LIMIT 1
((838831, '1010965979', datetime.datetime(2015, 3, 6, 22, 0), Decimal('444.88'), Decimal('0.00')),)
【问题讨论】:
标签: python mysql mysql-python