So you appear to have a DATETIME variable instead of a DATE variable. Dates are stored as a number of days and datetime values as a number of seconds.
You also seem to have found a strange feature of SAS. If you add a time part to the literal string in a DATE literal the time part is ignored when converting the string into an actual date value. It doesn't even had to look like a time value, it can any extraneous text because SAS just ignores it once it has 9 characters to convert into a date value.
540 data test;
541 duedate = '23MAY2018:12:10:56'd;
542 put duedate= :comma15. ' ' duedate date9. ' ' duedate datetime20.;
543 duedate = '23MAY2018:blahblah'd;
544 put duedate= :comma15. ' ' duedate date9. ' ' duedate datetime20.;
545 run;
duedate=21,327 23MAY2018 01JAN1960:05:55:27
duedate=21,327 23MAY2018 01JAN1960:05:55:27
So if you want to make an actual DATETIME literal remember to use DT suffix after the quoted string and not just the letter D.
546
547 data test;
548 duedate = '23MAY2018:12:10:56'dt;
549 put duedate= :comma15. ' ' duedate date9. ' ' duedate datetime20.;
550 run;
duedate=1,842,696,656 ********* 23MAY2018:12:10:56
Notice how the actual value of the DATETIME value is so much larger than the DATE value. That is because there are 24*60*60=86,400 seconds in a single day.