2016-04-06 41 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)上,您将更多关注SFMC的问题。 /salesforce.stackexchange.com/questions/tagged/marketing-cloud)标记。 –

回答

0

您应该能够将Oracle日期转换为date。投射到date也将剥离T-SQL中的datetime字段的时间部分。

SQL Fiddle

MS SQL Server 2008的架构设置

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]com', '01-MAY-98', '06-APR-16') 

查询1

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 |