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

GETUTCDATE()は、同じステートメントで2回使用された場合、同じ値を返しますか?

    gbnが提供するリンクのおかげで、これが私の質問に答えると思います:

    rand()と共通です。列ごとに1回評価されますが、一度評価されると、すべての行で同じままです。実際の実行プランでComputeScalar演算子のプロパティを見ると、GetDate()が2回評価されていることがわかります。

    >

    確認したところ、SQL Server 2008でも同じように発生しているようです:GetUtcDate() 実行計画で2回評価されます。行ごとに異なる結果が生成されることはありませんが、タイミングが適切に終了した場合は、列ごとに異なる結果が生成される可能性があります。

    編集

    私は実際にこの振る舞いを証明することができます!これを試してください:

    select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
    from [TableOfYourChoice]
    

    私の実験では、2011-05-17 20:47:34.247になりました。 最初の列と2011-05-17 20:47:34.250 最後の列には、すべてのRAND()の評価の結果として3ミリ秒の差が示されています。 ■GETUTCDATE()の最初の呼び出しと2番目の呼び出しの間。



    1. MariaDBクラスターのマルチクラウドフルデータベースクラスターフェイルオーバーオプション

    2. EasysoftODBCドライバーとODBCINSTライブラリ

    3. Oracle-使用しているTNSNamesファイルは何ですか?

    4. SQLiteでの日付による全順序の実行