Salvador Ramos
2007-01-10 09:27:21 UTC
Hola a todos,
Por un error en una aplicación, se han generado una serie de filas con una
columna hora (char(4)) con el valor '', ahora necesito actualizar esas filas
con una hora generada de forma aleatoria. Y ahí es donde tengo el problema,
ya que no consigo generar estos valores.
En primer lugar he intentado lo siguiente:
select right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) *
100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 24 as int) as char(2))), 2) +
right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 60 as int) as char(2))), 2) as aleatorio,*
from MiTabla
where hora = ''
El problema es que me genera un solo valor aleatorio para toda la
instrucción select. Luego he decidido hacer una función que devuelva una
hora aleatoria:
create function dbo.HoraAleatoria()
returns char(4)
as
begin
return( select right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE())
* 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 24 as int) as char(2))), 2) +
right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 60 as int) as char(2))), 2)
)
end
GO
Pero me indica que el siguiente error:
Uso no válido de operador con efectos secundarios o dependiente del tiempo
en 'rand' dentro de una función.
Además si ejecuto la función muy seguido me da horas muy similares o
idénticas.
Alguien me puede ayudar a generar estas horas de forma aleatoria para cada
una de las filas ?
Muchas gracias
Por un error en una aplicación, se han generado una serie de filas con una
columna hora (char(4)) con el valor '', ahora necesito actualizar esas filas
con una hora generada de forma aleatoria. Y ahí es donde tengo el problema,
ya que no consigo generar estos valores.
En primer lugar he intentado lo siguiente:
select right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) *
100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 24 as int) as char(2))), 2) +
right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 60 as int) as char(2))), 2) as aleatorio,*
from MiTabla
where hora = ''
El problema es que me genera un solo valor aleatorio para toda la
instrucción select. Luego he decidido hacer una función que devuelva una
hora aleatoria:
create function dbo.HoraAleatoria()
returns char(4)
as
begin
return( select right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE())
* 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 24 as int) as char(2))), 2) +
right(rtrim('00' + cast(cast( RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) ) * 60 as int) as char(2))), 2)
)
end
GO
Pero me indica que el siguiente error:
Uso no válido de operador con efectos secundarios o dependiente del tiempo
en 'rand' dentro de una función.
Además si ejecuto la función muy seguido me da horas muy similares o
idénticas.
Alguien me puede ayudar a generar estas horas de forma aleatoria para cada
una de las filas ?
Muchas gracias
--
Un saludo
Salvador Ramos
Murcia - España
------------------------------------------------
[Microsoft MVP SQL Server / MCTS: SQL Server 2005]
www.helpdna.net (información sobre SQL Server y .NET)
------------------------------------------------
Un saludo
Salvador Ramos
Murcia - España
------------------------------------------------
[Microsoft MVP SQL Server / MCTS: SQL Server 2005]
www.helpdna.net (información sobre SQL Server y .NET)
------------------------------------------------