Changing payment method can create a new subscription object, so it’ll have a new created_at date. An example of this is that one of my bots has be subscribed to a channel for about 4 years without any break, but because I changed the payment method the created_at date when I look at my bot on that channels subscribers list says it was created months ago, despite having a consistent sub for years.
This also means that people changing between Prime, Paid, non-subbed, and Gifted subs will also create new subscription objects with a new created_at date.
The only way to get a rough idea of how long someone has been subbed for is by the sub badge in chat, and if they choose to share their resub message which will show the cumulative months subbed. If they are just lurkers and don’t speak much (thus not being able to see their badge) or don’t share their resub, then you’ll never have accurate data on how long someone has been a sub for, and the longer they’ve been subbed the greater the margin of error.