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

SQL Server:tertarik dengan GETDATE()

GetDate() tidak pernah deterministik. Deterministik berarti akan selalu mengembalikan hasil yang sama ketika melewati parameter yang sama.

Sama dengan rand() Ini dievaluasi sekali per kolom tetapi setelah dievaluasi tetap sama untuk semua baris.

Lebih mudah untuk melihat perilaku ini dengan rand() dari getdate()

select top 4 rand(), rand()
from sys.objects

Dikembalikan

---------------------- ----------------------
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363
0.0566172633850772     0.431111195699363

Jika Anda mencoba yang berikut

select top 10 getdate(), getdate()
from sys.objects

dan lihat properti operator ComputeScalar dalam rencana eksekusi aktual, Anda akan melihat bahwa GetDate() dievaluasi dua kali.

NB:Ada kemungkinan bahwa perilaku evaluasi per kolom ini daripada per kueri berubah setelah SQL 2000 (saya tidak tahu) tetapi bukan itu yang didefinisikan BOL sebagai arti deterministik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2012 Paket Layanan 1 &Pembaruan Kumulatif 1

  2. Cara Menjatuhkan Batasan Kunci Asing di Database SQL Server - Tutorial SQL Server / TSQL Bagian 75

  3. Bagaimana cara memilih string antara dua string dalam kolom di SQL Server?

  4. Bisakah Alat Data SQL Server bekerja dengan SQL Server 2008 SSIS?

  5. menggunakan pyodbc di linux untuk memasukkan karakter unicode atau utf-8 di bidang nvarchar mssql