Borrar filtros
Borrar filtros

Time difference in year between table datetime values and now

2 visualizaciones (últimos 30 días)
I have a vector of datetime values. I would like to get a vector of years elapsed between the datetime values and the present. How do I do this?
I tried
years(MyTable.BirthDate- now)
and got
Error using years
Input data must be a real, numeric array, or a duration array. Use YEAR to extract year numbers from a
datetime array.
I tried
year(MyTable.BirthDate- now)
but it rounded the values, and I would like the decimal difference. How can I get, for example, that one of the entries is 6.8 years old today?

Respuesta aceptada

Steven Lord
Steven Lord el 22 de Mayo de 2024
Don't use the now function. It returns a serial date number. Use datetime('now') (which returns a datetime) instead.
fiveYearsFromNow = datetime(2029, 5, 22)
fiveYearsFromNow = datetime
22-May-2029
N = datetime('now')
N = datetime
22-May-2024 21:18:40
y = years(fiveYearsFromNow-N)
y = 4.9970
But you may instead want to compute a calendarDuration instead of a duration. You can do this with the between function.
difference = between(N, fiveYearsFromNow) % Just shy of 5 years by timeofday(N)
difference = calendarDuration
4y 11mo 29d 2h 41m 19.759s
To correct for the fact that fiveYearsFromNow represents midnight on May 22, 2029 you can add timeofday(N) to it so fiveYearsFromNow and N represent the same amount of time past midnight on their respective days.
T = timeofday(N)
T = duration
21:18:40
difference = between(N, fiveYearsFromNow+T)
difference = calendarDuration
5y

Más respuestas (0)

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by