回答
你可以使用由Nexr提供的last_day(dateString)
UDF。它返回基於日期字符串的月份的最後一天,格式爲yyyy-MM-dd HH:mm:ss模式。
Example:
SELECT last_day('2003-03-15 01:22:33') FROM src LIMIT 1;
2003-03-31 00:00:00
你需要從他們的Github Repository把它和建設。他們的wiki頁面包含如何在Hive上構建和使用它的所有信息。
HTH
我認爲你可以在你的蜂巢查詢TO_DATE(字符串時間戳)使用UDF。例如: - 返回時間戳字符串的日期部分:to_date(「1970-01-01 00:00:00」)=「1970-01-01」。現在,你需要寫一個UDF說(即LASTDAY)將實施以下內容: -
Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.DATE, -1);
Date lastDayOfMonth = calendar.getTime();
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(lastDayOfMonth)
現在,您的UDF將是這樣的: -
select lastDay(to_date(string timestamp)) from xxx;
我希望這將有助於你的理由
類似下面的可以給你一些啓示。該代碼將爲您提供上個月的最後一天。你可以通過它來獲得你想要的任何月份的最後一天。
date_sub(concat(from_unixtime(unix_timestamp(), 'yyyy-MM'), '-01'), 1)
select
CASE WHEN month(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')) IN(4,6,9,11)
THEN
date_add((FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),30 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')))
WHEN month(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')) IN(1,3,5,7,8,10,12)
THEN
date_add((FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),31 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')))
WHEN month(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')) = 2 and day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'))=28
THEN
date_add((FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),28 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')))
WHEN month(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')) = 2 and day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'))=29
THEN
date_add((FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')),29 - day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd')))
END as calc_date from table_name
limit 2;
如果你想避免以下自定義的UDF是另一種解決方案: to_date(date_sub(add_months(concat(from_unixtime(unix_timestamp('2015-07-28','yyyy-MM-dd'), 'yyyy-MM'),'-01'),1),1))
https://github.com/manojkumarvohra/day-extremes
你可以使用這個項目獲得firstday/LASTDAY爲多種單位:天,一週,一個月,一個季度,一年。
它接受輸入日期作爲字符串,時間戳,日期在各種有效格式和各種有效格式輸出。
(可選)您可以提及可選的時間戳作爲間隔添加。
用法
FIRST_DAY_OF(單位,日期,input_format [可選],OUTPUT_FORMAT [可選],include_interval [可選],間隔[可選])
LAST_DAY_OF(單位,日期,input_format [可選], output_format [optional],include_interval [optional],interval [可選])
從Hive 1.1.0開始,last_day(string date)
函數可用。
last_day(string date)
返回的日期所屬月份的最後一天。日期是格式爲'yyyy-MM-dd HH:mm:ss'或'yyyy-MM-dd'的字符串。日期的時間部分被忽略。
- 1. 在HIVE查詢中獲取上個月的最後一天
- 2. SAS:找到月份和年份的最後一天的日期
- 3. 從python的年份月份獲取月份的最後一天
- 4. 從月份中獲取月份的第一天和最後一天的密鑰
- 5. 給定月份的最後一天
- 6. 月份問題的最後一天
- 7. 月份計算的最後一天
- 8. 瞬間JS月份的最後一天
- 9. 返回月份的最後一天
- 10. Solr計算月份的最後一天
- 11. 查詢當前月份的最後一天的SQL查詢?
- 12. 格式日期作爲月份的第一天/最後一天
- 13. 在sql中查找上個月的最後一天數據
- 14. PostgreSQL:如何查詢當前月份的最後一天?
- 15. JQuery DatePicker添加月份到最後一個月的最後一天
- 16. 映射月份到當月的最後一天的編號
- 17. TSQL從前幾個月的最後一天到指定月份
- 18. 本月的最後一天?
- 19. 獲取所選月份和年份的第一天和最後一天?
- 20. 在HIVE中選擇月份的第一天
- 21. 將月份的第一天轉換爲Angular JS中的月份的最後一天
- 22. 減去月份 - 月份的最後一天的問題?在河上的日期
- 23. PHP:在不超過月份的最後一天的情況下添加月份
- 24. 如何獲取當前月份的最後一天和下個月的最後一天
- 25. 在python中獲取月份的最後一天
- 26. 如何在YearMonth對象中獲取月份的最後一天?
- 27. 查找在這段時間內每月的第一天和最後一天
- 28. 查找月份的最後一個日期和返回值
- 29. 計算月份開始/結束時固定的月份最後一天
- 30. 找到任何一個工作日的月份的最後一天
請根據http://stackoverflow.com/editing-help格式化您的代碼 – Aderstedt