我正在寻找一个星期几的变通方法或配置日期功能,
Sunday - 1
Monday - 2
Tuesday - 3
Wednesday - 4
Thursday - 5
Friday - 6
Saturday - 7
详细要求:我正在寻找一个以日期字符串(YYYYMMDD)作为输入的函数,并根据上表输出星期几。
答案 0 :(得分:39)
考虑使用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了解简单的日期格式文档。
答案 1 :(得分:12)
您现在可以使用date_format(Hive 1.2):
hive> select date_format('2016-12-01' ,'u');
OK
4
答案 2 :(得分:9)
select pmod(datediff(your_date,'1900-01-07'),7) + 1 as WeekDay from your_table
答案 3 :(得分:0)
从Hive 2.2开始,还有另一种可能性:
hive> select extract(dayofweek FROM your_date) FROM your_table;
答案 4 :(得分:0)
扩展iggy的答案,这是获取星期几的查询。调整查询以根据需要设置一周的第一天。
SELECT current_date AS `Date`,
CASE date_format(current_date,'u')
WHEN 1 THEN 'Mon'
WHEN 2 THEN 'Tues'
WHEN 3 THEN 'Wed'
WHEN 4 THEN 'Thu'
WHEN 5 THEN 'Fri'
WHEN 6 THEN 'Sat'
WHEN 7 THEN 'Sun'
END AS day_of_week
答案 5 :(得分:-4)
正如我所说,你需要编写一个UDF,它接受一个字符串作为参数并返回一个字符串。 在UDF内部,您需要执行以下步骤:
1。)使用 SimpleDateFormat(YYYYMMDD)
解析输入字符串2。)使用以下代码获取星期几:
Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
3。)在案例陈述中使用此 dayOfWeek 值来获取工作日字符串并返回该字符串。
希望这有助于...... !!!