我正在尋找解決方法或蜂巢日期功能,使該星期的一天,蜂巢日期函數來實現
Sunday - 1
Monday - 2
Tuesday - 3
Wednesday - 4
Thursday - 5
Friday - 6
Saturday - 7
要求詳細:我正在尋找這需要時間的函數字符串(YYYYMMDD)作爲輸入,並根據上表輸出星期幾。
我正在尋找解決方法或蜂巢日期功能,使該星期的一天,蜂巢日期函數來實現
Sunday - 1
Monday - 2
Tuesday - 3
Wednesday - 4
Thursday - 5
Friday - 6
Saturday - 7
要求詳細:我正在尋找這需要時間的函數字符串(YYYYMMDD)作爲輸入,並根據上表輸出星期幾。
正如我所說的,你需要編寫一個UDF,它將接受一個字符串作爲參數並返回一個字符串。 的UDF裏面你需要做以下步驟:
1)解析使用的SimpleDateFormat(年月日)的輸入字符串
2)使用下面的代碼來獲得星期:
Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
3)在case語句使用此一週中的某天值,讓您平日字符串並返回該字符串。
希望這有助於... !!!
感謝它有幫助 – user3279189
完全沒有必要爲此編寫自己的UDF。 – swdev
select pmod(datediff(your_date,'1900-01-07'),7) + 1 as WeekDay from your_table
考慮使用from_unixtime(your date,'u')
- 這將返回從Monday=1
開始的每週數。 如果您的日期是不是在unixtime格式,你可以改用以下內容:
from_unixtime(unix_timestamp('20140112','yyyyMMdd'),'u')
看到:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html簡單的日期格式的文檔。
它僅適用於Java 7,它在Java 6上失敗(http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html中沒有'u'選項)。 –
此外,如果你想要工作日的文本版本(即「星期一」,「星期二」等),你可以用'E'代替''''' – willwest
星期一是1,星期日是7 –
您現在可以使用DATE_FORMAT(蜂巢1.2):
hive> select date_format('2016-12-01' ,'u');
OK
4
你需要寫UDF這一點。 你能解釋你的要求嗎?此外,該列的數據類型是什麼? –