SPSS Date Variables Tutorial

SPSS date calculations are much easier than they may seem at first. The first key to success is understanding what SPSS date variables really are. Next, choose (and possibly combine) the right date functions. This tutorial will walk you through the main ones.

We recommend you follow along by downloading and opening hospital.sav.

SPSS Date Variable in Data View

SPSS Main Date Functions

The table below shows SPSS’ main date functions. The remainder of this tutorial will discuss them in more detail and shows how to use them for answering real world questions regarding our data.

DATEDIFF Compute difference between two dates in given time unit datediff(date1,date2,’days’) Standard numeric value
DATESUM Add / subtract numer of given time units to date variable datesum(date,10,’days’) Date value
XDATE Extract date component from date variable xdate.month(date) Standard numeric value
DATE.DMY Create date value from day, month, year date.dmy(19,3,2015) Date value


SPSS DATEDIFF function returns the number of given time units between two date values. Importantly, DATEDIFF truncates (rounds down) its outcome values. For example, 2 years and 363 days are returned as 2 years and 0 days if years are chosen as the time unit.

How many days ago did our respondents enter the hospital? We can answer this by using subtracting entry_date from the current date using DATEDIFF. We’ll create the current date in our data by using $time.

The syntax below shows how to do so.* The following screenshot shows the result in data view.

SPSS DATEDIFF Syntax Example

*1. Create current date as new variable in data.

compute today = $time.
exe.*2. Show current date in date format.

formats today(edate10).*3. Compute

compute days_ago = datediff(today,entry_date,’days’).

*4. Hide empty decimals.

formats days_ago(f4).

SPSS Datediff Function Example


SPSS DATESUM adds or subtracts a number of given time units from a date variable. Enter a positive value for addition or a negative values for subtraction. We’ll illustrate both with an example on our data.

A researcher wants to contact respondents 3 months after they entered the hospital. However, 7 days prior to contacting them, they should be sent a notification for this. The syntax below shows how to do so. The result is shown in the screenshot that follows.

SPSS DATESUM Syntax Examples

*1. Add 3 months to entry_date for calculating contact_date.

compute contact_date = datesum(entry_date,3,’months’).
exe.*2. Show time values as dates.

formats contact_date(date11).*3. Subtract 7 days from contact_date as notify_date.

compute notify_date = datesum(contact_date,-7,’days’).

*4. Show time values as dates.

formats notify_date(date11).

SPSS Datesum Function Example


SPSS XDATE extracts a date component from a date value. The component to extract is appended as a suffix to the function as in XDATE.YEAR or XDATE.MONTH. There’s no such thing as XDATE.DAY. Instead, use

  • XDATE.MDAY for the day of the month (1 through 31);
  • XDATE.WKDAY for the day of the week (1 through 7 where 1 is Sunday, not Monday);
  • XDATE.JDAY for the day of the year (1 through 366).

For example, the syntax below first extracts the year from entry_date and then the month. The following screenshot shows the result.

SPSS XDATE Syntax Examples

*1. Extract year from date.

compute year = xdate.year(entry_date).
exe.*2. Extract month from date.

compute month = xdate.month(entry_date).
exe.*3. Hide decimals.

formats year month(f4).

*4. Apply value labels to month.

value labels month 1 ‘January’ 2 ‘February’ 3 ‘March’ 4 ‘April’ 5 ‘May’ 6 ‘June’ 7 ‘July’ 8 ‘August’ 9 ‘September’ 10 ‘October’ 11 ‘November’ 12 ‘December’.

SPSS Xdate Function Example


SPSS DATE.DMY Function creates a date value from its components. That is, given a day, month and year, it calculates the number of seconds between the year 1582 and the date defined by these components.

The function’s DMY suffix indicates the order in which the components are given: first day, then month, then year. The result can be shown as a normal date by a FORMATS command and can be used in all sorts of date calculations.

For example, a researcher starts analyzing these data on January 20, 2015. He wants to calculate how many days before the start of his data analysis patients entered the hospital.* The syntax below shows how he can do so.

SPSS Date.dmy Function Example

SPSS DATE.DMY Syntax Example

*1. Add start_date as January 20th., 2015 as new variable to data.

compute start_date = date.dmy(20,1,2015).
exe.*2. Show start_date as date.

formats start_date (edate10).*3. Compute days before start of data analysis.

compute days_passed = datediff(start_date,entry_date,’days’).

SPSS Date Comparisons

When we compare two numbers, we can simply ask whether one number is larger than the other. The exact same, simple logic holds for date comparisons. However, there’s one caveat: although we see normal dates, the actual values (numbers of seconds since the year 1582) are used in date comparisons.

This may sound daunting but the solution is simple: if we want to compare an SPSS date value with some comparison date, we simply convert the comparison date into an SPSS date value too. We just saw how to do so easily: fill in the date components into DATE.DMY. We’ll demonstrate this with some examples.

Say the hospital got a new CEO on February 20, 2014. We want to know if visits before this date are rated the same as visits after this date. We’ll now select visits on and after February 20, 2014.*Note the use of IF in step 2.

SPSS Date.dmy Function ExampleFlagging visits that started on or after February 20, 2014.

SPSS Date Comparison Syntax Example 1

*1. Compute new_ceo variable (all zeroes).

compute ceo = 0.*2. If entry date is at least February 20th., 2014, entry during new CEO.

if entry_date >= date.dmy(20,2,2014) ceo = 1.
exe.*3. Hide unnecessary decimals.

formats ceo(f1).

*4. Add value labels to new variable.

value labels ceo 0 ‘entry_date during old CEO’ 1 ‘entry_date during new CEO’.

SPSS Date Comparison Syntax Example 2

The Summer holidays in 2014 were from June 30, 2014 through August 24, 2014. How can we select visits during these holidays? The syntax below shows how do so easily by using DATE.DMY within RANGE.

*1. Compute holiday variable holding just zeroes.

compute holidays_2014 = 0.*2. Insert 1 if visit started during holidays 2014.

if range(entry_date,date.dmy(30,6,2014),date.dmy(24,8,2014)) holidays_2014 = 1.
exe.*3. Hide decimals.

formats holidays_2014(f1).

That’s basically it for the main DATE calculations in SPSS. We could come up with a million more examples but you’ll probably figure them out yourself pretty easily by now. Thanks for reading and feel free to leave us a comment below!