我想订购一组日期的(年,周号)小号。
在Impala SQL中,有函数weekofyear
提供了正确的星期数:
select year('2018-12-31'), weekofyear('2018-12-31')
year('2018-12-31')|weekofyear('2018-12-31')|
------------------|------------------------|
2018| 1|
但是如果要以字符串格式'yyyyWwk'订购(年,周号)连音符,则功能year
不起作用。
是否有一种巧妙的方法来获取每个日期的yyyyWwk?上例中给出的日期2018-12-31
将产生结果2019W01
。
您可以在order by
子句中使用列别名
select year(datecol) as yr, weekofyear(datecol) as wk
from yourtable
order by yr, wk
因为year()
和weekofyear()
函数都返回integer
值。
如果这只是一个order by
问题,那么我推测您有某种聚合查询。如果是这样,您可以使用:
order by min(datecol)
这将正确排序整个查询。
也就是说,如果要按week来获取信息,请使用date_trunc()
而不是提取年和周:
select date_trunc('week', '2018-12-31')