You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite获取今日日期及Pandasql查询空DataFrame问题咨询

嘿,我来帮你搞定这两个问题!

问题1:如何在SQLite中获取今日日期?

在SQLite里获取今日日期有几种简单实用的方式:

  • 最常用的是 date('today'),它会返回 YYYY-MM-DD 格式的今日日期(比如2024-05-20)。
  • 如果需要带时间的完整日期时间,可以用 datetime('now', 'localtime'),返回格式是YYYY-MM-DD HH:MM:SS;要是只需要日期部分,date('now')和date('today')效果完全一样。
问题2:Pandasql查询返回空DataFrame的解决方法

咱先拆解你代码里的问题——你用了 e.Date >= date('today') 却返回空结果,大概率是数据类型不匹配或者日期格式不一致导致的,给你几个针对性的解决方案:

方案1:统一日期类型,提取日期部分比较

首先确保你的Date列是datetime类型(不是字符串),然后在查询里提取日期部分来和今日日期对比,这是最稳妥的方式:

# 先把Date列转换成datetime类型
import pandas as pd
df_event['Date'] = pd.to_datetime(df_event['Date'])

# 修改查询语句,用date()函数提取日期部分
q = """
select e.Date, e.SITA, e.Events
from df_event e
where date(e.Date) >= date('today')
"""
df_event2import = pandasql.sqldf(q, locals())

不管你的Date列有没有时间戳(比如2024-05-20 14:30:00),这个方法都会只拿日期部分来比较,避免时间干扰。

方案2:直接用你定义的today变量

你已经生成了today = now.strftime("%Y-%m-%d"),可以直接把这个变量代入查询,注意要加单引号(SQL里字符串需要引号包裹):

q = f"""
select e.Date, e.SITA, e.Events
from df_event e
where e.Date >= '{today}'
"""
df_event2import = pandasql.sqldf(q, locals())

不过这个方法要保证df_event['Date']的格式和YYYY-MM-DD完全一致,或者Date列已经是datetime类型(Pandas会自动处理字符串和datetime的比较)。

方案3:先检查你的Date列数据

要是上面的方法还不行,先确认Date列的真实情况,排查格式或类型问题:

# 查看Date列的前几行数据和类型
print(df_event['Date'].head())
print(df_event['Date'].dtype)

如果是object类型(字符串),但格式不是YYYY-MM-DD(比如是20/05/2024),那得先转换成正确格式:

# 假设你的日期格式是DD/MM/YYYY,转换成YYYY-MM-DD
df_event['Date'] = pd.to_datetime(df_event['Date'], format='%d/%m/%Y').dt.strftime('%Y-%m-%d')

这里的format参数要根据你实际的日期格式调整,比如MM/DD/YYYY就改成%m/%d/%Y。


内容的提问来源于stack exchange,提问作者Sorath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:24:09