如果两者都是DATE 类型,您可以直接在ADS SQL 中减去日期。如果它们都是TIMESTAMP,则可以使用TIMESTAMPDIFF() 和TSI_SQL_DAYS 作为间隔。如果一个是DATE,另一个是TIMESTAMP,则需要将TIMESTAMP转换为DATE,然后直接相减即可。
以下是所有这三种选择的示例。
两列都是DATE:
create table Test (ID integer, StartDate Date, Completed Date);
insert into Test values (1, '2019-01-01', '2019-01-31');
insert into Test values (2, '2019-01-01', '2018-02-28');
select id, startdate, completed, completed - startdate as days from test;
输出:
id startdate completed days
--- ----------- ----------- ----
1 01/01/2019 01/31/2019 30
2 01/01/2019 02/28/2019 58
两列都是TIMESTAMP:
create table Test2 (ID integer, StartDate TimeStamp, Completed TimeStamp);
insert into Test2 (ID, StartDate, Completed)
values (1, CreateTimeStamp(2019, 1, 1, 0, 0, 0, 1),
CreateTimeStamp(2019, 1, 31, 0, 0, 0, 1));
insert into Test2 (ID, StartDate, Completed)
values (2, CreateTimeStamp(2019, 1, 1, 0, 0, 0, 1),
CreateTimeStamp(2019, 2, 28, 0, 0, 0, 1));
select id, startdate, completed,
TimeStampDiff(SQL_TSI_DAY, StartDate, Completed) as days from test2;
输出:
id startdate completed days
--- ----------- ----------- ----
1 01/01/2019 01/31/2019 30
2 01/01/2019 02/28/2019 58
有一个DATE 和一个TIMESTAMP:
create table Test3 (ID integer, StartDate TimeStamp, Completed Date);
insert into Test3 (ID, StartDate, Completed)
values (1, CreateTimeStamp(2019, 1, 1, 0, 0, 0, 1), '2019-01-31');
insert into Test3 (ID, StartDate, Completed)
values (2, CreateTimeStamp(2019, 1, 1, 0, 0, 0, 1), '2019-02-28');
select id, startdate, completed,
Completed - Cast(StartDate AS SQL_DATE) as days from test3;
输出:
id startdate completed days
--- ----------- ----------- ----
1 01/01/2019 01/31/2019 30
2 01/01/2019 02/28/2019 58