dateadd(D, 1, getdate()), dateadd(Y, 1, getdate())
これら2つの違いは何ですか?誰でも同じ結果が得られる理由を説明できますか?
トレーニングの完了日を 1 年以上に設定しようとしています。また、トレーニングの完了日に基づいて、次の 30 日以内に参加する人を見つける必要があります。
dateadd(D, 1, getdate()), dateadd(Y, 1, getdate())
これら2つの違いは何ですか?誰でも同じ結果が得られる理由を説明できますか?
トレーニングの完了日を 1 年以上に設定しようとしています。また、トレーニングの完了日に基づいて、次の 30 日以内に参加する人を見つける必要があります。
2 番目の "y" は通算日を取得しますが、年を追加するという意味ではありません。だから二人は同じことを言っている。1 つ目は、現在の日に 1 日追加するというもので、2 つ目は、今年の現在の日に 1 日追加するというものです。年を追加するには、dateadd(YY, 1, getdate()) と言う必要があります。
http://msdn.microsoft.com/en-us/library/ms186819.aspx
あなたがやろうとしていることについてのあなたの最後の声明には従いません。ただし、上記のリンクで定義されている日付部分を使用すると、必要な日/月/年の数を追加できるはずです。
このSQL Fiddleは、2 つの違いを示しています。
たとえば、現在の日付 ( GETDATE()
) をデータベースの日付として使用すると、次のようなテーブルが作成されます...
id date
1 March, 25 2013 18:20:29+0000
...
最初のパラメータはdatepart
. これはyear (yy,yyyy)
、quarter (qq,q)
、dayofyear (dy,y)
などです。リスト全体はmsdnにあります。
日には D を使用します... これにより、日付に 1 日が追加されます。
SELECT dateadd(D,1,getdate()) FROM test;
戻りMarch, 26 2013 18:24:27+0000
ます。
Y は年を表すと思うかもしれませんが、それは間違いです。Y は通年日に使用されます。YY
orYYYY
を追加するには 1 年間使用する必要があります。
SELECT dateadd(Y,1,getdate()) FROM test;
これはMarch, 26 2013 18:24:27+0000
、前のクエリと同じです。これは、年間通算日が日と同じであるためです。
SELECT dateadd(YY,1,getdate()) FROM test;
getdate()
予想される+ 1 year
... ( March, 25 2014 18:31:27+0000
)を出力します