I think the result type of u32 is not enough.
From the spark,
spark-sql> SELECT EXTRACT(YEAR FROM TIMESTAMP '-2000-12-16 12:21:13');
-2000
But this is not related to this issue, I will open a follow up pull request and discuss the returned type.
Originally posted by @liukun4515 in #1991 (comment)