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 );
Next
Next

Rounding Functions