Search code examples
date-arithmeticspsstimezone-offset

How to subtract certain minuted from a DateTime in SPSS


I have timestamps in a column which I have imported in SPSS. Example, 7/6/2011 2:21 in a column called 'Observation'

This is in the string format. Now I also have timezone corrections for these data. So, -60 would mean subtract 60 minutes from this date.

How would I do this in SPSS syntax?


Solution

  • There are native date formats in SPSS, but unfortunately it does not appear that any cover the example you posted. I would parse the beginning of the string field to get the mm/dd/yyyy and the hh:mm part seperate, convert those into their representative time formats, and then do the time calculations.

    For an example

    data list fixed / observation (A25).
    begin data
    7/6/2011 2:21
    10/11/2011 15:42
    07/06/2011 02:21
    3/15/2011 0:21
    end data.
    
    *getting the data part, assuming the space will always delimit the two parts.
    compute #space = char.index(observation," ").
    string date (A10).
    compute date = char.substr(observation,1,#space-1).
    *getting the time part.
    string time (A5).
    compute time = char.substr(observation,#space+1,5).
    execute.
    
    *now converting them into date formats.
    alter type date (A10 = ADATE10).
    alter type time (A5 = TIME5).
    *you should check these carefully to make sure they were converted correctly.
    *now making one time variable.
    compute date_time = date + time.
    formats date_time (DATETIME17).
    execute.
    
    *now it is just as simple as subtracting the specified value.
    compute date_time_adj = DATESUM(date_time,-60,"minutes").
    execute.
    formats date_time_adj (DATETIME17).