sql - 在日期函数之间组合字符串后获取 NULL
问题描述
给定一个带值的日期列2020-05-01
,我想返回2020-Q2
。由于我们使用的 Hive 版本,该QUARTER()
功能不可用。
我可以通过以下方式获得季度数:(INT((MONTH(yyyy_mm_dd)-1)/3)+1)
。当我尝试将它与YEAR()
函数和字符串结合起来时,我得到null
:
year(yyyy_mm_dd)+"-"+"Q"+(INT((MONTH(yyyy_mm_dd)-1)/3)+1) as time_frame
如何正确连接它以获得所需的空字符串?
使用此查询:
select
yyyy_mm_dd,
year(yyyy_mm_dd)
|| '-Q'
|| INT((MONTH(yyyy_mm_dd)-1)/3) + 1 as time_frame
from
schema.table1
where
yyyy_mm_dd = '2019-01-01'
limit 1
引发此错误:
编译语句时出错:失败:ParseException 第 4:9 行无法识别“|”附近的输入 ''-Q'' '|' 在表达式规范中
解决方案
不要+
用于字符串连接 - 只有 SQL Server 支持这一点。在 Hive 中,您可以使用标准运算符||
:
year(yyyy_mm_dd)
|| '-Q'
|| INT((MONTH(yyyy_mm_dd)-1)/3) + 1 as time_frame
推荐阅读
- xcode - how can I use facebook sdk swift 4.1 branch for ios
- scala - Simple play/scala benchmark, rendering a view versus a raw text output comparison
- java - How can I display dishName according to the searched price after sorting in jtable java?
- google-apps-script - Cannot convert sheet row to class error in google script
- notepad++ - 如何用 .xml 文件中的一个特定值替换多行代码中不同值的数字?
- python - 与线程一起使用时,cv2 imshow 在关闭并再次打开后不再打开窗口
- ios - 如何使 UIPageViewController 的缓存页面失效?
- javascript - YouTuve IFrame API 与 playerVars 的问题
- dart - Dart 中的“var”和“List”有什么区别?
- javascript - 如何在 React 中使用 three.js