Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Seleziona una data casuale all'interno di un intervallo specifico

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'