sql – 在Impala中将YYYYMMDD字符串转换为Date
发布时间:2020-12-12 06:38:08 所属栏目:MsSql教程 来源:网络整理
导读:我在Impala中使用SQL来编写此查询.我正在尝试将以YYYYMMDD格式存储的日期字符串转换为日期格式,以便运行如下查询: SELECT datadate,session_infoFROM databaseWHERE datadate = NOW() - INTERVAL 5 DAYORDER BY datadate DESC; 由于 = NOW() – INTERVAL 5 D
我在Impala中使用SQL来编写此查询.我正在尝试将以YYYYMMDD格式存储的日期字符串转换为日期格式,以便运行如下查询:
SELECT datadate,session_info FROM database WHERE datadate >= NOW() - INTERVAL 5 DAY ORDER BY datadate DESC; 由于> = NOW() – INTERVAL 5 DAY代码不能与YYYYMMDD字符串一起使用,我想找到一种方法将其转换为可用于此类查询的日期格式.我的想法是它应该看起来像这样(基于关于其他SQL查询编辑器的类似问题),但它在Impala中不起作用: SELECT datadate,session_info,convert(datetime,'20141008',102) AS session_date FROM database WHERE session_date >= NOW() - INTERVAL 5 DAY ORDER BY session_date DESC; 任何人都知道如何在Impala中做到这一点? 编辑: 我终于找到了解决问题的有效方法.使用CAST或CONVERT配置的任何尝试都不会在Impala中起作用,但是下面的查询解决了问题并且完全可操作,允许对包含字符串值的列执行日期数学运算: SELECT datadate,session_info FROM database WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days),'yyyyMMdd') GROUP BY datadate ORDER BY datadate DESC; 解决方法请参阅 http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/latest/topics/impala_literals.html上的时间戳文字您需要将破折号添加到字符串中,以便Impala能够将其转换为日期/时间戳.你可以这样做: concat_ws('-',substr(datadate,1,4),5,2),7) ) 您可以在表达式中使用而不是datadate. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读