AGE between 2 dates in snowflake
In Netezza we have function called as AGE but snowflake i couldn't find anything similar
Netezza: select AGE('2019-12-01', '2018-12-12') - o/p: 11 mons 20 days
Is there similar function in snowflake?
So given Netezza is based on PostgreSQL, so it's AGE function, is equivalent to Snowflake's DATEDIFF, but like PostgreSQL interval it defaults to expressing it in simplified terms of Years/Months/Days. Snowflake doesn't offer a function that does that. Also the order of the parameters is swapped.
Thus your AGE('2019-12-01', '2018-12-12') would be DATEDIFF('days', '2018-12-12', '2019-12-01')
I was going to suggest you could do the following to build up the parts, but I am quite sure this is a bug in snowflake:
select '2018-12-12'::date AS st
,'2019-12-01'::date AS et
--,DATEDIFF('month', st,et) AS t_m
--,DATEDIFF('days', st,et) AS t_d
,DATEDIFF('year', st,et) AS y
,DATEADD('year', y, st) AS yst
,DATEDIFF('month', yst,et) AS m
,DATEADD('month', m, yst) AS mst
,DATEDIFF('day', mst,et) AS d
;
AS y is 1 and t_m is 12 which I don't believe they should be as it's only 354 days..
I will open a bug report. But if/when that's fixed then you can compare the y, m, & d together to get the string back if you needs want that.. otherwise I would stick to days myself..