-6

以下のクエリは正しく、より具体的TransferTime < (GetDate() - 3ですか?

$num_rows = $db->doQuery('
    SELECT Class, TransferTime 
    FROM USERDATA 
    WHERE strUserId = ? 
      AND (TransferTime < (GetDate() - 3) OR TransferTime IS NULL)   
', $character);

実際には 3 日で正確に機能しないため、 strUserIDandが 3 日未満であるかどうかを確認しますか?transfertime

4

2 に答える 2

3

GETDATE() - 3現在の日付時刻から 3 日を減算します。から始まる 3 日前にそのフィルタを使用する必要がある場合は00:00:00.000、最初に のTIME部分を削除する必要がありGETDATE()ます。SQL Server 2008 以降を使用している場合は、次のようにキャストできGETDATE()ますDATE

WHERE TransferTime < DATEADD(DAY,-3,CONVERT(DATE,GETDATE()))

以前のバージョンでは、次を使用できます。

WHERE TransferTime < DATEADD(DAY,DATEDIFF(DAY,0,GETDATE())-3,0)
于 2013-07-08T19:52:39.847 に答える