Incrementing a Date
These examples demonstrate how, in TurboIntegrator and rules notation, dates can be incremented by years, months or days.
A few assumptions:
sStartDate and DB ( 'Dates', 'Start Date', 'sValue' ) are assumed to hold a date in the format YYYY-MM-DD
nPeriod is assumed to be a number number of years, months or days to increment the date
For the cube rules, I am assuming a two dimensional cube with sValue as a string and nValue as a numeric
Increment date by years
sNewDate = Dates ( Year ( sStartDate ) + nPeriod, Numbr ( SubSt ( sStartDate, 6, 2 ) ), Numbr ( SubSt ( sStartDate, 9, 2 ) ) ); ['New Date', 'sValue'] = S: Dates ( Year ( DB ( 'Dates', 'Start Date', 'sValue' ) ) + ['Periods', 'nValue'], Numbr ( SubSt ( DB ( 'Dates', 'Start Date', 'sValue' ), 6, 2 ) ), Numbr ( SubSt ( DB ( 'Dates', 'Start Date', 'sValue' ), 9, 2 ) ) );
Increment date by months
sNewDate = S: Dates ( Year ( sStartDate ) + INT ( ( Month ( sStartDate ) + nPeriod - 1) / 12), Mod ( Month ( sStartDate ) + nPeriod - 1, 12) + 1, Numbr ( SubSt ( sStartDate, 9, 2 ) ) ); ['New Date'] = S: Dates ( Year ( DB ( 'Dates', 'Start Date', 'sValue' ) ) + INT ( ( Month ( DB ( 'Dates', 'Start Date', 'sValue' ) ) + ['Periods', 'nValue'] - 1) / 12), Mod ( Month (DB ( 'Dates', 'Start Date', 'sValue' ) ) + ['Periods', 'nValue'] - 1, 12) + 1, Numbr ( SubSt ( DB ( 'Dates', 'Start Date', 'sValue' ), 9, 2 ) ) );
Increment date by days
sNewDate = S: Date ( DayNo ( sStartDate ) + nPeriod , 1 ); ['New Date'] = S: Date ( DayNo ( DB ( 'Dates', 'Start Date', 'sValue' ) ) + ['Periods', 'nValue'] , 1 );