2016-04-06 40 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 |