Spark SQL无法在子查询中使用当前日期

rryofs0p  于 2023-08-06  发布在  Apache
关注(0)|答案(1)|浏览(143)

我有一个将日志发布到Spark数据库的进程:


的数据
我试图通过在查询中提供当前日期来使SQL更具动态性,但是当我这样做时,它返回0:



在子查询本身上运行子查询可以工作:


有人能帮忙吗?

mrwjdhj3

mrwjdhj31#

该查询的问题在于,您在子查询生成的模式周围添加了单引号。这意味着like运算符只匹配batch_insert_Date列以单引号开头,后跟子查询生成的日期前缀的行。要解决此问题,可以从子查询生成的模式中删除单引号。下面是一个如何修改查询以实现此目的的示例:

SELECT * FROM my_table
WHERE batch_insert_Date LIKE
(SELECT CONCAT(cast(date_format(current_date(),'yyyyMMdd') as string), '%') AS date_col)

字符串
在这个修改后的查询中,CONCAT()函数用于将子查询生成的日期前缀与%通配符连接起来,该通配符匹配任意数量的字符。然后使用LIKE运算符将batch_insert_Date列与子查询生成的模式进行匹配。
此查询应返回表中batch_insert_Date列以yyyyMMdd的当前日期开始的所有行。


的数据

相关问题