我有一个将日志发布到Spark数据库的进程:
的数据我试图通过在查询中提供当前日期来使SQL更具动态性,但是当我这样做时,它返回0:
的在子查询本身上运行子查询可以工作:的有人能帮忙吗?
mrwjdhj31#
该查询的问题在于,您在子查询生成的模式周围添加了单引号。这意味着like运算符只匹配batch_insert_Date列以单引号开头,后跟子查询生成的日期前缀的行。要解决此问题,可以从子查询生成的模式中删除单引号。下面是一个如何修改查询以实现此目的的示例:
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的当前日期开始的所有行。
CONCAT()
%
LIKE
yyyyMMdd
的数据
1条答案
按热度按时间mrwjdhj31#
该查询的问题在于,您在子查询生成的模式周围添加了单引号。这意味着
like
运算符只匹配batch_insert_Date
列以单引号开头,后跟子查询生成的日期前缀的行。要解决此问题,可以从子查询生成的模式中删除单引号。下面是一个如何修改查询以实现此目的的示例:字符串
在这个修改后的查询中,
CONCAT()
函数用于将子查询生成的日期前缀与%
通配符连接起来,该通配符匹配任意数量的字符。然后使用LIKE
运算符将batch_insert_Date
列与子查询生成的模式进行匹配。此查询应返回表中
batch_insert_Date
列以yyyyMMdd
的当前日期开始的所有行。的数据