1

クエリで次の行を見つけましたが、いくら考えても、それが何を意図しているのか理解できません...なぜこれが where 句になるのか、どのように疑似コードで読み取りますか?

      DATEADD(year,              
             DATEDIFF(year, Convert(datetime,upvHD.PropertyVal), GETDATE()),
             Convert(datetime,upvHD.PropertyVal) 
             ) > GETDATE()
4

1 に答える 1

5

表現

DATEADD(year,              
         DATEDIFF(year, Convert(datetime,upvHD.PropertyVal), GETDATE()),
         Convert(datetime,upvHD.PropertyVal) 
         )

格納されている日付を取得しPropertyVal、その日付の年の部分を現在の年と同じになるようにリセットしています。

これは現在の日付と比較されます。これは、特定の日付の記念日を過ぎたかどうかを確認するために使用される場合があります。


それを分解するために、まず次の式があります。

DATEDIFF(year, Convert(datetime,upvHD.PropertyVal), GETDATE())

PropertyValと現在の日付の間に発生した年の遷移 (大晦日 -> 元日) の数を計算します。次に、この表現:

DATEADD(year,              
         <previous>,
         Convert(datetime,upvHD.PropertyVal) 
         )

に同じ年数を加算していますPropertyVal

于 2013-10-30T07:16:36.617 に答える