select DateAdd(d, ROUND(DateDiff(d, '1950-01-01', '1999-12-31') * RAND(), 0), '1950-01-01')
MODIFICA
Se questo deve essere eseguito come parte di un'istruzione che restituisce più righe o come parte dell'aggiornamento, RAND() restituirebbe un valore singolo per l'intero set di risultati. In tal caso è possibile utilizzare RAND(CHECKSUM(NEWID())).
select DateAdd(d, ROUND(DateDiff(d, '1950-01-01', '1999-12-31') * RAND(), 0), '1950-01-01'),
DateAdd(d, ROUND(DateDiff(d, '1950-01-01', '1999-12-31') * RAND(CHECKSUM(NEWID())), 0), '1950-01-01')
from master..spt_values where type = 'P'