A smallint
data type uses the msb (most significant bit) to indicate the sign of the value. The range of values, therefore, is -2^15 (-32,768) to 2^15-1 (32,767).
If the value is converted into an unsigned integer, these values look like the number of days since 1900-01-01 (the standard "epoch" value used by many Windows apps).
You can fairly easily convert the valid range of smallint
values into dates using this:
DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23732), 0), 0))
So, for the values listed in your question, you get:
SELECT DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23569), 0), 0))
SELECT DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23789), 0), 0))
SELECT DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23629), 0), 0))
SELECT DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23564), 0), 0))
SELECT DATEADD(DAY, 0, CONVERT(int, CONVERT(varbinary(2), CONVERT(smallint, -23732), 0), 0))
╔═════════════════════════╗
║ 2014-11-26 00:00:00.000 ║
║ 2014-04-20 00:00:00.000 ║
║ 2014-09-27 00:00:00.000 ║
║ 2014-12-01 00:00:00.000 ║
║ 2014-06-16 00:00:00.000 ║
╚═════════════════════════╝
Having said that, it's pretty impossible to tell if these dates are accurate for your implementation. Without some other context, it's impossible to say definitively.
SELECT dateadd(d, LastDateAccessed, '2078-06-07') FROM tablename
smallint
represent as @AaronBertrand suggested.