从apache钻取日期的一周获得的日期
问题描述:
我试图将某些数据(使用apache drill)中的时间戳转换为一年中的某一周。从apache钻取日期的一周获得的日期
根据reference我可以看到的壁橱的东西是“提取”功能,但是这只适用于年,月,日,小时,分钟,第二单位。
原始日期例如
ID, START_DATE
1, 2014-07-07T13:20:34.000Z
查询(像这样)
SELECT ID, EXTRACT(WEEK, START_DATE) FROM MY_TABLE;
而得到这样的结果:
ID, START_DATE
1, 27
答
我碰到这个问题又来了几个星期后再次和,而不是写在钻功能(因为我觉得这是多大,我需要一个星期的只是一个粗略的估计)我做,而不是执行以下操作:
# 7 * 24 * 60 * 60 = 604800
select
START_DATE as `ORIGINAL DATE`,
TRUNC(CAST((CAST((UNIX_TIMESTAMP(START_DATE,'yyyy-MM-dd HH:mm:ss.SSS') - UNIX_TIMESTAMP(EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')),'yyyy')) AS FLOAT)/CAST(604800 AS FLOAT)) AS FLOAT)) + 1 as `WEEK_NO`,
EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')) as `YEAR`
from
GAME_DATA
order by
START_DATE
limit 10;
答
Curently,Extract function支持以下时间单位:年,月,日,小时,MINUTE,SECOND。
例子:
SELECT ID,EXTRACT(YEAR FROM START_DATE) from dfs.`/home/dev/Desktop/date.csv`;
您可以创建自己的功能得到本周年的。检查docs开发自定义函数。