An ESP32 just draws about 0.15mA or less in deep sleep mode, even less if the ULP co-processor is turned off - down to about 5 µA if you're willing to keep no state/data around and just need timer wakeup. That's 220000 hours of hibernation on an ideal 1100 mAh battery (i.e. one that doesn't lose charge by itself over time)!
In practice this is unattainable, because batteries are not ideal, and there's quite some efficiency loss from e.g. voltage regulators. But you can realistically get to years of hibernation.
Of course the power draw is much higher if you e.g. need to permanently keep a WiFi connection open and can't sleep (there's lower-power alternatives to WiFi like ESP-NOW for some applications), but I just need a connection for a very short time to fetch a 1600x1200x4 image. And to power a full display refresh on the e-ink panel.
If you think about it, a Kindle or similar also runs for days to weeks off a single charge, and that has a lot more interaction and computation going on during use, a more powerful processor with higher power draw and it sleeps less deeply and for shorter time. My application is suitable to extend beyond that by a large factor.