sql >> Databáze >  >> RDS >> Sqlserver

Odlišné generování náhodného času v pevném intervalu

Problém OP měl při použití pouze rand() je kvůli jeho vyhodnocení jednou na dotaz .

Z dokumentace :

Přístup, který je popsán níže, odstraňuje optimalizaci a potlačuje toto chování, takže rand() se vyhodnocuje jednou na řádek :

dateadd( second
       , rand(cast(newid() as varbinary)) * 43200
       , cast('08:00:00' as time) )
  • newid() generuje jedinečnou hodnotu typu uniqueidentifier ;
  • hodnota se převede pomocí cast být použit jako semena v rand([seed]) funkce pro generování pseudonáhodného float hodnotu od 0 do 1 a jako zárodek je vždy jedinečné, návratová hodnota je také jedinečná.

SQLFiddle



  1. yii vztah pro více sloupcových cizích klíčů

  2. Srovnávání spravovaných cloudových řešení PostgreSQL:Část druhá – Amazon RDS

  3. Automaticky zabíjet dlouho běžící dotazy (MySql), Apache Tomcat DataSource

  4. MySql:Porovnejte 2 řetězce, které jsou čísla?