我必须更新名为“patron_filtrado”的表并填写一个名为“fecha_nacimiento”类型日期的列。随机日期,日期将在1920年至1980年之间。
我想过这样的事情
Update patron_filtrado
SET fecha_nacimiento= DateAdd(d, ROUND(DateDiff(d, '1920-01-01', '2080-12-31') * RAND(CHECKSUM(NEWID())), 0),
DATEADD(second,CHECKSUM(NEWID())%48000, '1920-01-01'))
我好吗?
答案 0 :(得分:0)
修改自:How to update rows with a random date
NEWID比尝试使用RAND更好:RAND不会在单个SELECT或UPDATE中生成不同的值行(在SQL 2000中没有生成它,以防行为发生变化)。
尝试
SELECT DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 22265), '1920-01-01')
FROM your_table
这将生成从1920-01-01到1980-12-31的日期。
如果您想更新,那么
UPDATE your_table
SET your_date_field = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 22265), '1920-01-01')
WHERE your_conditions