= SPSS Datetime Functions = SPSS supports these '''datetime functions''' in the global scope. <> ---- == Date == The '''`DATE`''' function returns a date value. {{{ numeric DATEVAR (date10) compute DATEVAR = date.mdy(1, 2, 3000) * Given TIMESTAMPVAR like "dd/mm/yyyy hh:mm:ss". numeric DATETIMEVAR (datetime20). compute DATETIMEVAR = date.mdy( number(char.substr(TIMESTAMPVAR,1,2), f2), number(char.substr(TIMESTAMPVAR,4,2), f2), number(char.substr(TIMESTAMPVAR,7,4), f4) ) + time.hms( number(char.substr(TIMESTAMPVAR,12,2), f2), number(char.substr(TIMESTAMPVAR,15,2), f2), number(char.substr(TIMESTAMPVAR,18,2), f2) ). }}} Valid subtypes of the `DATE` function include... * `date.mdy(month, day, year)` (shown above) * `date.dmy(day, month, year)` * `date.moyr(month, year)` * `date.qyr(quarter, year)` where `quarter` is between 1 and 4 * `date.wkyr(week, year)` where `week` is between 1 and 53 * `date.yrday(year, daynum)` where `daynum` is between 1 and 366 These range checks are common to all of the above: * `year` must be greater than 1582 * `month` must be between 1 and 13 * `day` must be between 0 and 31 Note that a date format must separately be applied to a created variable. Note that if a range check is failed for ''any'' argument, a missing value is returned. Note that if a `day` value is invalid for a particular month (eg. 29 through 31 for February in non-leap years) the returned value is shifted across months. {{{ compute example = date.mdy(1,0,2022). formats example (ADATE10). execute. list all. * 12/31/2021. compute example = date.mdy(2,29,2022). execute. list all. * 03/01/2022. compute example = date.mdy(2,30,2022). execute. list all. * 03/02/2022. }}} Furthermore note that a `month` value of 13 is equivalent to January in the following year. Note that for ''any'' `year` value, `date.wkyr(1, year)` will return January 1 of that year. ---- == Datediff == The '''`DATEDIFF`''' function subtracts a date or time from another, returning an integer in terms of the specified unit. {{{ num_days = datediff(date1,date2,"days") }}} Valid units include: * `"years"` * `"quarters"` * `"months"` * `"weeks"` * `"days"` * `"hours"` * `"minutes"` * `"seconds"` Note that the returned value is floored using the specified unit. ---- == Datesum == The '''`DATESUM`''' function adds some number of units to a date or time, returning a new date or time. {{{ month_ago = datesum(date1,-1,"months") }}} Reference the above list for valid values of the third argument. ---- == Time == The '''`TIME`''' function returns a time value. {{{ compute two_thirty = time.hms(2, 30, 0) }}} Valid subtypes of the `DATE` function include... * `time.hms(hours, minutes, seconds)` (shown above) where `seconds` is allowed to be a decimal * `time.hms(hours, minutes)` where `minutes` is allowed to be a decimal * `time.hms(hours)` where `hours` is allowed to be a decimal * `time.days(days)` Note that a time format must separately be applied to a created variable. Note that `minutes` '''must be less than 60''' if `hours` is non-zero. `time.hms(0, 90)` valid, but `time.hms(1, 90)` is not. Similarly, `seconds` '''must be less than 60''' if `minutes` '''''or''''' `hours` are non-zero. ---- == Xdate == The '''`XDATE`''' function extracts a component of a date or time value. ||'''Function''' ||'''Returns''' || ||`xdate.year` ||Year || ||`xdate.month` ||Month (1 to 12) || ||`xdate.mday` ||Day of the month (1 to 31) || ||`xdate.wkday` ||Day of the week (1 to 7) || ||`xdate.jday` ||Day of the year (1 to 366) || ||`xdate.hour` ||Hours || ||`xdate.minute` ||Minutes || ||`xdate.second` ||Seconds || ---- CategoryRicottone