Now this is not a scientific test. But I had a jug of Pyrodex RS that was over five years old. It was one (unopened) that I had put on a back shelf in a bag with the receipt. So I knew the date I purchased it. When I found it, the price sticker on the lid kind of gave it away too. I am one of these that keep buying stuff on sale. Since then I have learned to rotate my stock.
When I shot that old Pyrodex RS it shot to the same place on the target as a new jug. Whether it lost some fps I can not say as I never owned a chronograph in my life. I used up that old jug just like I would have a new one.
Another powder that I had a long time was Clean Shot. I had purchased what was left of a case of it when a store went out of business. Before I shot off the last jug it had to be over five years old. It went bag every time and seemed accurate at close ranges out of my traditional rifles. Actually it was a fun powder to shoot. I believe that later turned into American Pioneer Powder Company.