问题描述
我需要在 Hivesql 中创建用户定义的列名,如下面的 Postgresql 查询。你能帮我解决这个问题吗。
SELECT
COUNT(user_id) as "Total Customers"
FROM
customer_profiles
WHERE
profiled_date BETWEEN '2020-01-01' AND '2020-12-31'
解决方法
使用反引号:
SELECT
COUNT(user_id) as `Total Customers`
FROM
...
但由于 Hive 限制,无法保留大小写。结果列名将是小写:
total customers
看到这个答案:https://stackoverflow.com/a/57183048/2700344
,首先,不要在标识符中放置空格。改用下划线:
SELECT COUNT(user_id) as Total_Customers
FROM customer_profiles
WHERE profiled_date BETWEEN '2020-01-01' AND '2020-12-31'
这适用于所有数据库,您无需摆弄转义字符。
其次,对于日期/时间比较,我强烈建议您避免使用 BETWEEN
。相反:
WHERE profiled_date >= '2020-01-01' AND
profiled_date < '2021-01-01'
这适用于日期和日期/时间。您的版本将过滤掉 12 月 31 日的记录,如果它们具有除午夜以外的时间组件。是的,我知道在此查询中您知道没有时间组件。但总有一天,会有一个,你会使用 BETWEEN
并得到错误的结果。