2016-07-07 87 views
0

我试图将某些数据(使用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 

回答

0

我碰到这个问题又来了几个星期后再次和,而不是写在钻功能(因为我觉得这是多大,我需要一个星期的只是一个粗略的估计)我做,而不是执行以下操作:

# 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; 
1

Curently,Extract function支持以下时间单位:年,月,日,小时,MINUTE,SECOND。

例子:

SELECT ID,EXTRACT(YEAR FROM START_DATE) from dfs.`/home/dev/Desktop/date.csv`; 

您可以创建自己的功能得到本周年的。检查docs开发自定义函数。

相关问题