选择HIVE中的第一天

时间:2015-04-30 15:50:27

标签: sql hive hiveql

我正在使用Hive(类似于SQL,但SQL用户的语法可能略有不同)。我查看了另一个stackoverflow,但它们似乎在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;

5 个答案:

答案 0 :(得分:6)

要获得该月的第一天,您可以使用:

date_add(<date>,
         1 - day(<date>) )

适用于您的表达:

date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),
         1 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd')) 
        )

但这适用于任何格式正确的列。

答案 1 :(得分:5)

SELECT TRUNC(rpt.statement_date,'MM')将为您提供每月的第一天。

答案 2 :(得分:3)

尝试

date_format(current_date,'yyyy-MM-01')

答案 3 :(得分:1)

另一种方式 - select concat(substring(current_date,1,7),'-01');

答案 4 :(得分:1)

您可以使用此查询来计算当月的第一天

Select date_add(last_day(add_months(current_date, -1)),1);

您可以使用日期字段名称代替current_date。

  • last_day =&gt;给出当月的最后一天
  • add_months with -1 =&gt;上个月给出了
  • date_add with 1 =&gt;添加一天