Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
fbf12681
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fbf12681
编写于
9月 20, 1997
作者:
T
Thomas G. Lockhart
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Include tinterval comparison functions for span of interval.
上级
59847461
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
206 addition
and
5 deletion
+206
-5
src/backend/utils/adt/date.c
src/backend/utils/adt/date.c
+206
-5
未找到文件。
src/backend/utils/adt/date.c
浏览文件 @
fbf12681
...
...
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.1
8 1997/09/08 21:48:21 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.1
9 1997/09/20 16:17:45 thomas
Exp $
*
* NOTES
* This code is actually (almost) unused.
...
...
@@ -565,16 +565,217 @@ reltimege(RelativeTime t1, RelativeTime t2)
/*
* intervaleq - returns 1, iff interval i1 is equal to interval i2
* intervalsame - returns 1, iff interval i1 is same as interval i2
* Check begin and end time.
*/
bool
interval
eq
(
TimeInterval
i1
,
TimeInterval
i2
)
interval
same
(
TimeInterval
i1
,
TimeInterval
i2
)
{
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
0
);
/* invalid interval */
return
(
FALSE
);
/* invalid interval */
return
(
abstimeeq
(
i1
->
data
[
0
],
i2
->
data
[
0
])
&&
abstimeeq
(
i1
->
data
[
1
],
i2
->
data
[
1
]));
}
}
/* intervalsame() */
/*
* intervaleq - returns 1, iff interval i1 is equal to interval i2
* Check length of intervals.
*/
bool
intervaleq
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
==
(
t21
-
t20
));
}
/* intervaleq() */
/*
* intervalne - returns 1, iff interval i1 is not equal to interval i2
* Check length of intervals.
*/
bool
intervalne
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
!=
(
t21
-
t20
));
}
/* intervalne() */
/*
* intervallt - returns TRUE, iff interval i1 is less than interval i2
* Check length of intervals.
*/
bool
intervallt
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
<
(
t21
-
t20
));
}
/* intervallt() */
/*
* intervalle - returns TRUE, iff interval i1 is less than or equal to interval i2
* Check length of intervals.
*/
bool
intervalle
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
<=
(
t21
-
t20
));
}
/* intervalle() */
/*
* intervalgt - returns TRUE, iff interval i1 is less than interval i2
* Check length of intervals.
*/
bool
intervalgt
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
>
(
t21
-
t20
));
}
/* intervalgt() */
/*
* intervalge - returns TRUE, iff interval i1 is less than or equal to interval i2
* Check length of intervals.
*/
bool
intervalge
(
TimeInterval
i1
,
TimeInterval
i2
)
{
AbsoluteTime
t10
,
t11
,
t20
,
t21
;
if
(
i1
->
status
==
T_INTERVAL_INVAL
||
i2
->
status
==
T_INTERVAL_INVAL
)
return
(
FALSE
);
/* invalid interval */
t10
=
i1
->
data
[
0
];
t11
=
i1
->
data
[
1
];
t20
=
i2
->
data
[
0
];
t21
=
i2
->
data
[
1
];
if
((
t10
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t20
==
INVALID_ABSTIME
)
||
(
t21
==
INVALID_ABSTIME
))
return
(
FALSE
);
if
(
t10
==
CURRENT_ABSTIME
)
t10
=
GetCurrentTransactionStartTime
();
if
(
t11
==
CURRENT_ABSTIME
)
t11
=
GetCurrentTransactionStartTime
();
if
(
t20
==
CURRENT_ABSTIME
)
t20
=
GetCurrentTransactionStartTime
();
if
(
t21
==
CURRENT_ABSTIME
)
t21
=
GetCurrentTransactionStartTime
();
return
((
t11
-
t10
)
>=
(
t21
-
t20
));
}
/* intervalge() */
/*
* intervalleneq - returns 1, iff length of interval i is equal to
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录