2017-08-24 4 views
1

ここにはPostgreSQLで作成したコードがありますが、T-SQLで使用する必要があります。 2つのテーブルを結合するときに、この '区間' 7d '部分をどのように書くことができますか? t-sqlに「インターバル」アナログがありますか?T-SQLのPostgreSQL "interval"のアナログ

LEFT JOIN UserActivity ua 
    ON ua.UserID = ur.UserID 
     AND ur.RegistrationDate = ua.UserLoginDate - interval '7d' 
+1

は 'datediff'機能を調べます。 –

+0

7日前にxが 'dateadd(day、-7、x)' –

+3

いいえ、アナログはありません。次のクエリを実行するのに7日間待ってください。 –

答えて

4

あなたは使用します。

LEFT JOIN 
UserActivity ua 
ON ua.UserID = ur.UserID AND 
    ur.RegistrationDate = DATEADD(day, -7, ua.UserLoginDate) 

注:両方のデータベースでは、これは、列が時間がないコンポーネントとの日付であることを前提としています。

Postgresと他のデータベースのintervalの機能と完全に一致するSQL Serverの機能は(現在)存在しません。ただし、基本機能はdateadd(),datediff()datepart()で十分です。

0

は、私はあなたがこのようなもので、その最後の行を交換したいと思う:

AND DATEDIFF(d, ur.RegistrationDate, ua.UserLoginDate) = 7