Hive日期函数实现星期几

f0brbegy  于 2023-05-17  发布在  Hive
关注(0)|答案(7)|浏览(223)

我正在寻找一个变通方法或Hive日期功能,使一周中的一天,

Sunday - 1
Monday - 2
Tuesday - 3
Wednesday - 4
Thursday - 5
Friday - 6
Saturday - 7

详细要求:我正在寻找一个函数,需要日期字符串(YYYYMMDD)作为输入和输出的一周中的每一天如上表。

sqserrrh

sqserrrh1#

考虑使用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获取简单日期格式文档。

zbwhf8kr

zbwhf8kr2#

现在可以使用date_format(Hive 1.2):

hive> select date_format('2016-12-01' ,'u');
OK
4
pvabu6sv

pvabu6sv3#

select pmod(datediff(your_date,'1900-01-07'),7) + 1 as WeekDay from your_table

  • 选择的任意开始日期(1900-01-07)
  • 计算一周中的mod 7天(加1以从1而不是零开始)
neekobn8

neekobn84#

扩展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
ttvkxqim

ttvkxqim5#

从Hive 2.2开始,还有另一种可能性:

hive> select extract(dayofweek FROM your_date) FROM your_table;
xtupzzrd

xtupzzrd6#

Select date_format(current_date, 'EEEE');

也就是说星期天,星期一,星期二等等

ulmd4ohb

ulmd4ohb7#

正如我所说,你需要写一个UDF,它将接受一个字符串作为参数并返回一个字符串。在UDF中,您需要执行以下步骤:
1.)使用**SimpleDateFormat(YYYYMMDD)**解析输入字符串
2.)使用下面的代码获取星期几:

Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

3.)在case语句中使用此dayOfWeek值,以获取您的weekday String并返回该字符串。
希望这对你有帮助…!!!

相关问题