除了編寫自定義的UDF來支持這個問題,是否有任何已知的方法來實現這一點?我目前正在使用Hive 0.13。如何獲取Hadoop Hive中給定時間戳的每週第一天的日期?
1
A
回答
2
是的,你可以在不寫UDF的情況下做到這一點。如果您在日期時間函數下查看Hive documentation,則有一個函數from_unixtime()
,它具有unix時間戳和字符串模式。在文檔頁面上有幾個函數,有一個link,它解釋了您可以在此函數中使用的不同模式。因此,從您的時間戳中,您可以提取一週中的某一天並據此進行操作。
示例數據:
1445313193
1445313100
1445313146
1445040000
1445040023
1445040111
前三個是星期一,2015年10月19日和最後三個週五,2015年10月16日。
查詢:
select day_of_week
, date_var
, case when day_of_week = 'Sun' then date_var
when day_of_week = 'Sat' then date_sub(date_var, 6)
when day_of_week = 'Fri' then date_sub(date_var, 5)
when day_of_week = 'Thu' then date_sub(date_var, 4)
when day_of_week = 'Wed' then date_sub(date_var, 3)
when day_of_week = 'Tue' then date_sub(date_var, 2)
when day_of_week = 'Mon' then date_sub(date_var, 1)
else NULL
end as first_day_of_week_date
from (
select from_unixtime(timestamp, 'EEE') day_of_week
, from_unixtime(timestamp, 'yyyy-MM-dd') date_var
from db.table) A
輸出:
Mon 2015-10-19 2015-10-18
Mon 2015-10-19 2015-10-18
Mon 2015-10-19 2015-10-18
Fri 2015-10-16 2015-10-11
Fri 2015-10-16 2015-10-11
Fri 2015-10-16 2015-10-11
所以,今天是昨天,這是週日返回,和上週五,它返回以前的週日,第11位。我假設「一週的第一天」是指星期天;如果沒有,您可以將代碼調整爲星期一。希望這可以幫助。
4
DATE_SUB(m.invitationdate,PMOD(DATEDIFF(m.invitationdate, '1900年1月7日'),7))
此表達產生了我的問題精確解。
問候,
鮑里斯
0
這是最簡單和獲取一週的日期的第一天最好的解決辦法:
對於當前timstamp:
select date_sub(from_unixtime(unix_timestamp()), cast(from_unixtime(unix_timestamp(), 'u') AS int)) ;
對於任何給定日期或欄目:
select date_sub(from_unixtime(unix_timestamp('2017-05-15','yyyy-MM-dd')), cast(from_unixtime(unix_timestamp('2017-05-15','yyyy-MM-dd'), 'u') AS int)) ;
select date_sub(from_unixtime(unix_timestamp(colname,'yyyy-MM-dd')), cast(from_unixtime(unix_timestamp(colname,'yyyy-MM-dd'), 'u') AS int)) ;
相關問題
- 1. 如何獲得給定周的第一天的日期?
- 2. 如何獲取給定月份中每週的日期間隔?
- 3. 如何獲取本週的所有日期時間實例,給定一天?
- 4. 查找當天第一個給定日期的第二個時間戳
- 5. 獲取給定日期的週數(周從星期天開始)
- 6. 獲得一週的第一天的日期在給定日期PHP
- 7. 給定一個時間戳,如何顯示timeago按天/周/月
- 8. Javascript,時間和日期:獲取第二天,周,月,年等
- 9. 如何查找每週的第一天的日期在vb6
- 10. 從SQL中獲取時間戳的第一個日期
- 11. 計算第一天從給定的週數中得到一週的日期
- 12. 如何查找給定日期所屬的一週中的第一天?
- 13. 獲得給定周的第一天
- 14. C#檢測一週中兩天之間的給定日期
- 15. XML Hive Serde提取時間戳Hadoop
- 16. JavaScript - 從當前日期開始獲得每週的第一天
- 17. 獲取一週中某天的時間戳
- 18. 獲得周第一天(星期日)
- 19. 第一天的時間戳
- 20. 我怎樣才能得到每週給定的一天的時間戳?
- 21. php:如何獲得2周後的日期的時間戳
- 22. 在時間戳中獲取今天的日期
- 23. Java獲取下個月的第一天給定日期
- 24. 如何在java中的兩個日期之間獲得除週末或週六或週日外的每一天?
- 25. 獲取最近一週的第n天的日期
- 26. 如何獲得Java中給定週數的第一天
- 27. PHP爲每週的每一天生成時間戳
- 28. Excel - 如何獲取日期是一週中的特定日期?
- 29. XQuery - 如何在給定日期的日期前90天獲取?
- 30. 獲取本週的星期一和今天的Python開始的UNIX時間戳