【问题标题】:ExactTarget -SFMC SQL Query to Add DaysExactTarget -SFMC SQL 查询以添加天数
【发布时间】:2016-04-06 23:10:21
【问题描述】:

运行查询以向电子邮件订阅者发送 +X 天电子邮件。 FIRST_PROMO_SUBSCRIBE_DATE 来自 Oracle,他们说这不是 Salesforce 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)

括号对吗?

【问题讨论】:

标签: sql mysqli salesforce exacttarget


【解决方案1】:

您应该能够将 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
('test@example.com', '01-APR-98', '01-APR-16'),
('test@example.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 |
|------------------|--------------------------|------------|---------------|------------|------------|------------|
| test@example.com |                01-APR-98 | 1998-04-01 |     01-APR-16 | 2016-04-01 | 2015-05-08 | 2016-04-06 |
| test@example.com |                01-MAY-98 | 1998-05-01 |     06-APR-16 | 2016-04-06 | 2015-05-08 | 2016-04-06 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多