Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Generasi waktu acak yang berbeda dalam interval tetap

Masalah OP miliki saat hanya menggunakan rand() karena evaluasinya sekali per kueri .

Dari dokumentasi :

Pendekatan yang dijelaskan di bawah menghilangkan pengoptimalan dan menekan perilaku ini, jadi rand() dievaluasi sekali per baris :

dateadd( second
       , rand(cast(newid() as varbinary)) * 43200
       , cast('08:00:00' as time) )
  • newid() menghasilkan nilai unik dari jenis uniqueidentifier ;
  • nilai dikonversi dengan cast untuk digunakan sebagai benih di rand([seed]) berfungsi untuk menghasilkan float pseudo-acak nilai dari 0 sampai 1 , dan sebagai benih selalu unik, nilai yang dikembalikan juga unik .

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. Kembalikan Semua Baris Dari Partisi Tertentu di SQL Server (T-SQL)

  2. Saya ingin melakukan group_concat di SQL Server

  3. Bagaimana cara mendapatkan Insert id di MSSQL di PHP?

  4. Apakah ada cara untuk mematikan konversi tipe implisit di SQL Server?

  5. Bagaimana cara meneruskan nilai ke parameter prosedur tersimpan di komponen Sumber OLE DB?