I stumbled on this question since I had a very similar problem myself. I am currently programming with LÖVE2D, which uses LuaJIT that is based on Lua 5.1, hence no integers. My personal question was: can I use a single variable to track time?
For time, more than knowing which is the top value, you should ask yourself, first of all, what is the required level of precision, say down to milli-, centi- or deciseconds (1, 10 or 100 ms). Or even seconds. Why?
See, even though you can theoretically sum up thousands of years in seconds using the Lua 5.1 number limits, which are around 2^1024, the problem is that after some very long time (but it all depends which are your boundaries, what if you are dealing with an astronomy app?) your discrimination between moments will fall dramatically...
> t = 2^1023
> print(t)
8.9884656743116e+307
> print(t+1) -- let's assume your dt is of 1 second
8.9884656743116e+307
So at some point, even delta of seconds become meaningless.
Therefore my suggestion is to check directly your limit with your required level of precision...
> a,b = 0,0.1 -- the precision is 100 ms
> while a~=b do a,b = b,b+1 end
interrupted!
I did not even wait to find up the limit, I just interrupted the loop, while still adding 0.1 to the previous moment changed the base value a.
> print(a/60/60/24/365) -- check current limit in years!
251.54387084919
So it is definitely safe to use a single variable to track time using Lua 5.1 and LuaJIT. Personally, since I am programming a general purpose framework, I preferred to divide seconds from smaller fractions to guarantee the maximum precision.