clickhouse计算相差年份的时候,toDate时间之后时间出错原因
在年龄中如果有1970年之前的数据,会转换不成功
换成:
minus(cast(substring('2000-01-01',1,4) , 'Int32'),cast(substring('1969-01-01',1,4) , 'Int32'))就可以了
如果条件很多,可以用case when 筛选条件进行计算
要特别注意的一样是oracle的计算年份相差会直接对时间进行计算
但是clickhouse不会,和Oracle的计算机制不一样会导致最后结果的不同,
所以clickhouse要对月份和天数进行条件筛选