在 HIVE 中选择一个月的第一天
Selecting the first day of the month in HIVE
我正在使用 Hive(与 SQL 类似,但 SQL 用户的语法可能略有不同)。我看过其他 Whosebug,但它们似乎在 SQL 中,语法不同。
我正在尝试通过此查询获取该月的第一天。这个给了我今天的一天。例如,如果今天是 2015-04-30,则结果将为 2015-04-01。谢谢!
select
cust_id,
FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd') as first_day_of_month_transaction
--DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) as first_day_of_month_transaction --SQL format. Not compatible in Hive.
from
customers;
要获取月份的第一天,您可以使用:
date_add(<date>,
1 - day(<date>) )
应用于您的表达式:
date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),
1 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'))
)
但这适用于格式正确的任何列。
SELECT TRUNC(rpt.statement_date,'MM') 会给你一个月的第一天。
另一种方式 - select concat(substring(current_date,1,7),'-01');
您可以使用此查询来计算当月的第一天
Select date_add(last_day(add_months(current_date, -1)),1);
您可以使用日期字段名称代替 current_date。
- last_day => 给出当月的最后一天
- add_months with -1 => 给出上个月
- date_add 加上 1 => 添加一天
试试这个
date_format(current_date,'yyyy-MM-01')
我正在使用 Hive(与 SQL 类似,但 SQL 用户的语法可能略有不同)。我看过其他 Whosebug,但它们似乎在 SQL 中,语法不同。
我正在尝试通过此查询获取该月的第一天。这个给了我今天的一天。例如,如果今天是 2015-04-30,则结果将为 2015-04-01。谢谢!
select
cust_id,
FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd') as first_day_of_month_transaction
--DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) as first_day_of_month_transaction --SQL format. Not compatible in Hive.
from
customers;
要获取月份的第一天,您可以使用:
date_add(<date>,
1 - day(<date>) )
应用于您的表达式:
date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),
1 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'))
)
但这适用于格式正确的任何列。
SELECT TRUNC(rpt.statement_date,'MM') 会给你一个月的第一天。
另一种方式 - select concat(substring(current_date,1,7),'-01');
您可以使用此查询来计算当月的第一天
Select date_add(last_day(add_months(current_date, -1)),1);
您可以使用日期字段名称代替 current_date。
- last_day => 给出当月的最后一天
- add_months with -1 => 给出上个月
- date_add 加上 1 => 添加一天
试试这个
date_format(current_date,'yyyy-MM-01')