sql >> データベース >  >> RDS >> Sqlserver

SQL Server:GETDATE()に興味を持った

    GetDate() 決定論的ではありませんでした。決定論的とは、同じパラメータが渡されたときに常に同じ結果を返すことを意味します。

    rand()と共通 列ごとに1回評価されます ただし、一度評価されると、すべての行で同じままになります。

    rand()を使用すると、この動作を簡単に確認できます。 getdate()より

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

    返品

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

    次のことを試してみてください

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

    実際の実行プランのComputeScalar演算子のプロパティを見ると、GetDate()であることがわかります。 2回評価されます。

    注意:SQL 2000以降、クエリごとではなく列ごとの評価のこの動作が変更された可能性がありますが(わかりません)、BOLが決定論的の意味として定義しているのはそれではありません。



    1. Excel VBA:mysqlデータベースへの書き込み

    2. MySQLのアイテムごとの最小値を選択します

    3. 2つのセットを比較するTSQL

    4. Mysql/Php-現在の日付と時刻