如何使用to_date函数过滤数据以从python中的sql查询中的时间戳过滤yyyymm

发布于 2025-02-10 16:49:36 字数 1004 浏览 1 评论 0 原文

在尝试根据时间戳列过滤数据时,我会遇到错误。

输入

 domain_name   INSERT_DATE        LOC
KNEU/TEREX   2019-05-08 12:05:13   AL
KNEU/TEREX   2019-05-16 11:45:49   BI
KNEU/TEREX   2019-05-21 11:45:49   MY
KNEU/TEREX   2014-09-11 11:45:49   SG
KNEU/TEREX   2014-09-11 11:45:49   IL

我的代码

sql3 = """select * from location where domain_name = 'KNEU/TEREX'and to_date(INSERT_DATE,'YYYY-MM')=2019-05 """
dfotm4 = pd.read_sql_query(sql3, connection3)

错误

DatabaseError: Execution failed on sql 'select * from location where domain_name = 'KNEU/TEREX'and to_date(INSERT_DATE,'YYYY-MM')=2019-05 ': ORA-00932: inconsistent datatypes: expected DATE got NUMBER

预期输出

domain_name   INSERT_DATE          LOC
KNEU/TEREX   2019-05-08 12:05:13   AL
KNEU/TEREX   2019-05-16 11:45:49   BI
KNEU/TEREX   2019-05-21 11:45:49   MY

我的代码中有什么问题。

I am getting an error while trying to filter data based on year month from timestamp column.

INPUT

 domain_name   INSERT_DATE        LOC
KNEU/TEREX   2019-05-08 12:05:13   AL
KNEU/TEREX   2019-05-16 11:45:49   BI
KNEU/TEREX   2019-05-21 11:45:49   MY
KNEU/TEREX   2014-09-11 11:45:49   SG
KNEU/TEREX   2014-09-11 11:45:49   IL

MY code

sql3 = """select * from location where domain_name = 'KNEU/TEREX'and to_date(INSERT_DATE,'YYYY-MM')=2019-05 """
dfotm4 = pd.read_sql_query(sql3, connection3)

Error

DatabaseError: Execution failed on sql 'select * from location where domain_name = 'KNEU/TEREX'and to_date(INSERT_DATE,'YYYY-MM')=2019-05 ': ORA-00932: inconsistent datatypes: expected DATE got NUMBER

EXPECTED OUTPUT

domain_name   INSERT_DATE          LOC
KNEU/TEREX   2019-05-08 12:05:13   AL
KNEU/TEREX   2019-05-16 11:45:49   BI
KNEU/TEREX   2019-05-21 11:45:49   MY

What is wrong in my code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉栀 2025-02-17 16:49:36

为了比较 sql 的年度和月份,我们可以使用月(表达)

SELECT * FROM location WHERE domain_name = 'KNEU/TEREX' AND YEAR(INSERT_DATE) = 2019 AND MONTH(INSERT_DATE) = 5;

代码中的错误是因为您尚未包装 2019-05 在报价中,它应该是'2019-05'

In order to compare year and month in SQL, we can make use of the MONTH(expression) and YEAR(expression)

SELECT * FROM location WHERE domain_name = 'KNEU/TEREX' AND YEAR(INSERT_DATE) = 2019 AND MONTH(INSERT_DATE) = 5;

Error in your code is because you haven't wrapped 2019-05 in quotes, it should've been '2019-05'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文