选择特定时间之间的所有记录?

时间:2019-11-25 13:18:08

标签: python pandas sqlite

我正在尝试从时间在09:30:00到15:30:00之间的表中获取所有记录

我的时间戳列为:

yyyy-mm-dd HH:MM:SS

下面返回一个空的数据框

sta = 'SELECT * FROM bnffut WHERE timestamp BETWEEN "09:15:00" and "15:30:00"'

df = pd.read_sql(sta,conn)

这给了我所有记录:

sta = 'SELECT * FROM bnffut WHERE timestamp >= "09:15:00"'
df = pd.read_sql(sta,conn)

TIA

2 个答案:

答案 0 :(得分:2)

您的timestamp列包含日期和时间,您不能仅将其与时间进行比较。
使用SUBSTR()仅从timestamp中提取时间:

sta = 'SELECT * FROM bnffut WHERE SUBSTR(timestamp, 12) BETWEEN "09:15:00" and "15:30:00"'

提取时间部分的另一种方法是使用函数TIME()

sta = 'SELECT * FROM bnffut WHERE TIME(timestamp) BETWEEN "09:15:00" and "15:30:00"'

答案 1 :(得分:1)

对于使用pandas进行帖子过滤,可以使用DataFrame.between_time方法。这需要DatatimeIndex,因此,首先set_index至您的时间戳列:

df.set_index('timestamp').between_time("09:15:00", "15:30:00")