从阿帕奇演习中获取一年中的一周

时间:2016-07-07 11:14:10

标签: sql apache datetime apache-drill

我试图将某些数据中的时间戳(使用apache drill)转换为一年中的一周。

根据reference壁橱我能看到的是"提取物"但是这只适用于YEAR,MONTH,DAY,HOUR,MINUTE,SECOND单位。

原始日期示例

ID, START_DATE
1, 2014-07-07T13:20:34.000Z 

查询(类似这样)

SELECT ID, EXTRACT(WEEK, START_DATE) FROM MY_TABLE; 

得到这样的结果:

ID, START_DATE
1, 27 

2 个答案:

答案 0 :(得分:1)

当然, Extract function 支持以下时间单位:年,月,日,小时,分钟,第二。

示例:

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

您可以创建自己的功能,以获得一年中的一周。检查docs以开发自定义函数。

答案 1 :(得分:1)

几周后我再次遇到这个问题,而不是在钻孔中编写一个函数(因为我觉得这很多,我只需要粗略估计一周)我做了以下代替:

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