我想从datetime列中选择2个时间戳之间的范围,创建新的列cropyear并对第一个选定范围应用2019,对第二个选定范围应用2020。
期望输出:
DateTime CropYear
'2018-11-16 00:00:00' 2019
... 2019
'2019-10-14 23:59:59' 2019
'2019-10-15 00:00:00' 2020
... 2020
* CURRENT_TIMESTAMP()* 2020
我尝试了此查询,但case似乎不支持时间戳:
select SerialNumber, DateTime,
case DateTime
when DateTime BETWEEN '2018-11-16 00:00:01' AND '2019-10-14 23:59:59' then 2019
when DateTime BETWEEN '2019-10-15 00:00:00' AND CURRENT_TIMESTAMP() then 2020
else "error"
end
as CropYear
from `xx.yyy`
1条答案
按热度按时间lrpiutwd1#
用偏移量提取年份函数怎么样?
这样就不需要
case
表情。“78”天是一个神奇的天数。把它加到10月15日,你就得到了次年的1月1日。
有一点与问题没有直接关系,那就是要小心。
TIMESTAMP
在bigquery中是utc(基本上认为是伦敦时间)。我猜你更关心某个特定的时区。如果时区是一个问题,那么问一个新问题。