2016-04-06 3 views
0

電子メールの購読者に+ X日の電子メールを送信するクエリを実行します。 FIRST_PROMO_SUBSCRIBE_DATEはOracleから来ていますが、これはSalesforce SQLの互換フォーマットではありません。ExactTarget -SFMC SQLクエリで日を追加する

select * from PROMO_SUBSCRIBERS 
where 
(ORDER_ENGAGEMENT_LAST_DT > dateadd(day,-335,CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
or ORDER_ENGAGEMENT_LAST_DT is null) 
and 
(ORDER_LAST_DT > dateadd(day,-1,CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
or order_last_dt is null) 

括弧は正しいですか?

+0

あなたは[salesforce.stackexchange.com](http://salesforce.stackexchange.com)、特に[Marketing-Cloud](http: /salesforce.stackexchange.com/questions/tagged/marketing-cloud)タグ。 –

答えて

0

あなたは、Oracleの日付をdateにキャストできます。 dateにキャストすると、T-SQLのフィールドの時間部分も削除されます。

SQL Fiddle

MS SQL Server 2008のスキーマのセットアップ:1

CREATE TABLE promo_subscribers 
    (
    emailaddress varchar(255) 
    , ORDER_ENGAGEMENT_LAST_DT varchar(15) 
    , ORDER_LAST_DT varchar(15) 

    ); 

INSERT INTO promo_subscribers 
(emailaddress, ORDER_ENGAGEMENT_LAST_DT, ORDER_LAST_DT) 
VALUES 
('[email protected]', '01-APR-98', '01-APR-16'), 
('[email protected]', '01-MAY-98', '06-APR-16') 

問合せ:

select 
emailaddress 
, order_engagement_last_dt 
, cast(order_engagement_last_dt as date) datecast1 
, order_last_dt 
, cast(order_last_dt as date) datecast2 
, dateadd(day,-335, cast(getDate() as date)) datecast3 
, dateadd(day,-1, cast(getDate() as date)) datecast4 
from PROMO_SUBSCRIBERS 

Results

|  emailaddress | order_engagement_last_dt | datecast1 | order_last_dt | datecast2 | datecast3 | datecast4 | 
|------------------|--------------------------|------------|---------------|------------|------------|------------| 
| [email protected] |    01-APR-98 | 1998-04-01 |  01-APR-16 | 2016-04-01 | 2015-05-08 | 2016-04-06 | 
| [email protected] |    01-MAY-98 | 1998-05-01 |  06-APR-16 | 2016-04-06 | 2015-05-08 | 2016-04-06 | 
関連する問題