如何为日期集订购(年,周号)

问题描述 投票:0回答:2

我想订购一组日期的(年,周号)小号。

在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

sql impala week-number
2个回答
0
投票

您可以在order by子句中使用列别名

select year(datecol) as yr, weekofyear(datecol) as wk
  from yourtable
 order by yr, wk

因为year()weekofyear()函数都返回integer值。


0
投票

如果这只是一个order by问题,那么我推测您有某种聚合查询。如果是这样,您可以使用:

order by min(datecol)

这将正确排序整个查询。

也就是说,如果要按week来获取信息,请使用date_trunc()而不是提取年和周:

select date_trunc('week', '2018-12-31')
© www.soinside.com 2019 - 2024. All rights reserved.