0

私は前任者によって書かれたスクリプトを通過していました。

誰かが私になぜこの声明が

--- CreatedDateTime is a datetime column in SALES_ORDER table.
SELECT * FROM SALES_ORDER
WHERE GETDATE() - CreatedDateTime < 1

と同じ結果を返します

SELECT * FROM SALES_ORDER 
WHERE DateDiff(hh,CreatedDateTime, GetDate()) < 24
4

2 に答える 2

1

どちらのブール式も同じものに評価されます。24 時間前または 1 日前のいずれかです。ちなみに、どちらもCreatedDateTime列でのインデックスの使用を除外しています。この列にインデックスがあり、それが使用される可能性を高めたい場合は、次のように記述します。

    SELECT * FROM SALES_ORDER
    WHERE CreatedDateTime > GETDATE() - 1

またはこれ(1日未満):

    SELECT * FROM SALES_ORDER
    WHERE CreatedDateTime > DateAdd(dd,-1,GetDate())

またはこれ(古い古い86400000ミリ秒未満):

    SELECT * FROM SALES_ORDER
    WHERE CreatedDateTime > DateAdd(ms,-86400000,GetDate())
于 2013-10-11T02:28:51.800 に答える