Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyraźne losowe generowanie czasu w ustalonym interwale

Problem OP miał podczas używania tylko rand() wynika z oceny raz na zapytanie .

Z dokumentacji :

Podejście opisane poniżej usuwa optymalizację i tłumi to zachowanie, więc rand() jest oceniany raz na wiersz :

dateadd( second
       , rand(cast(newid() as varbinary)) * 43200
       , cast('08:00:00' as time) )
  • newid() generuje unikatową wartość typu uniqueidentifier ;
  • wartość jest konwertowana za pomocą cast do wykorzystania jako zarodek w rand([seed]) funkcja do generowania pseudolosowego float wartość od 0 do 1 i jako zarodek jest zawsze unikalny, zwracana wartość też jest unikalna.

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zresetuj źródło tożsamości po usunięciu rekordów w SQL Server

  2. Jak utworzyć ograniczenie klucza obcego w wielu kolumnach w SQL Server — samouczek SQL Server/TSQL — część 67

  3. czy możemy mieć klucz obcy, który nie jest kluczem podstawowym w żadnej innej tabeli?

  4. C++ wstępnie określa długość VARCHAR przy użyciu parametrów związanych z ODBC

  5. Wybierz ostatnie 30 dni z zapytaniem sql