Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
695c4a99
提交
695c4a99
authored
6 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add LOCALTIMESTAMP function from the SQL standard
上级
f651bc69
无相关合并请求
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
42 行增加
和
15 行删除
+42
-15
help.csv
h2/src/docsrc/help/help.csv
+16
-4
advanced.html
h2/src/docsrc/html/advanced.html
+2
-2
Parser.java
h2/src/main/org/h2/command/Parser.java
+2
-0
Function.java
h2/src/main/org/h2/expression/Function.java
+6
-4
JdbcDatabaseMetaData.java
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
+3
-3
ParserUtil.java
h2/src/main/org/h2/util/ParserUtil.java
+7
-2
current_timestamp.sql
.../test/scripts/functions/timeanddate/current_timestamp.sql
+6
-0
没有找到文件。
h2/src/docsrc/help/help.csv
浏览文件 @
695c4a99
...
...
@@ -3953,18 +3953,30 @@ CURRENT_TIME()
"
"Functions (Time and Date)","CURRENT_TIMESTAMP","
{ CURRENT_TIMESTAMP [ ( [ int ] ) ] | NOW( [ int ] ) }
CURRENT_TIMESTAMP [ ( [ int ] ) ]
","
Returns the current timestamp with time zone.
Time zone offset is set to a current time zone offset
If fractional seconds precision is specified it should be from 0 to 9, 9 is default.
The specified value can be used only to limit precision of a result.
The actual maximum available precision depends on operating system and JVM and can be 3 (milliseconds) or higher.
Higher precision is not available before Java 9.
This method always returns the same value within a transaction.
","
CURRENT_TIMESTAMP()
"
"Functions (Time and Date)","LOCALTIMESTAMP","
{ LOCALTIMESTAMP [ ( [ int ] ) ] | NOW( [ int ] ) }
","
Returns the current timestamp.
If fractional seconds precision is specified it should be from 0 to 9, 9 is default.
The specified value can be used only to limit precision of a result.
The actual maximum available precision depends on operating system and JVM and can be 3 (milliseconds) or higher.
Higher precision is not available before Java 9.
CURRENT_TIMESTAMP returns timestamp with time zone, its time zone offset is set to a current time zone offset.
NOW() returns the local timestamp without time zone information.
These methods always return the same value within a transaction.
","
CURRENT_
TIMESTAMP()
LOCAL
TIMESTAMP()
"
"Functions (Time and Date)","DATEADD","
...
...
This diff is collapsed.
Click to expand it.
h2/src/docsrc/html/advanced.html
浏览文件 @
695c4a99
...
...
@@ -504,8 +504,8 @@ unless they are quoted (surrounded with double quotes). The list is currently:
<code>
ALL, CHECK, CONSTRAINT, CROSS, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, DISTINCT, EXCEPT,
EXISTS, FALSE, FETCH, FOR, FOREIGN, FROM, FULL, GROUP, HAVING, INNER, INTERSECT, INTERSECTS,
IS, JOIN, LIKE, LIMIT,
MINUS, NATURAL, NOT, NULL, OFFSET, ON, ORDER, PRIMARY, ROWNUM, SELECT
,
SYSDATE, SYSTIME, SYSTIMESTAMP, TODAY, TOP, TRUE, UNION, UNIQUE, WHERE, WITH
IS, JOIN, LIKE, LIMIT,
LOCALTIMESTAMP, MINUS, NATURAL, NOT, NULL, OFFSET, ON, ORDER, PRIMARY
,
ROWNUM, SELECT,
SYSDATE, SYSTIME, SYSTIMESTAMP, TODAY, TOP, TRUE, UNION, UNIQUE, WHERE, WITH
</code>
</p><p>
Certain words of this list are keywords because they are functions that can be used without '()' for compatibility,
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/Parser.java
浏览文件 @
695c4a99
...
...
@@ -3148,6 +3148,8 @@ public class Parser {
r
=
readFunctionWithoutParameters
(
"USER"
);
}
else
if
(
equalsToken
(
"CURRENT_TIMESTAMP"
,
name
))
{
r
=
readFunctionWithoutParameters
(
"CURRENT_TIMESTAMP"
);
}
else
if
(
equalsToken
(
"LOCALTIMESTAMP"
,
name
))
{
r
=
readFunctionWithoutParameters
(
"LOCALTIMESTAMP"
);
}
else
if
(
equalsToken
(
"SYSDATE"
,
name
))
{
r
=
readFunctionWithoutParameters
(
"CURRENT_TIMESTAMP"
);
}
else
if
(
equalsToken
(
"SYSTIMESTAMP"
,
name
))
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/Function.java
浏览文件 @
695c4a99
...
...
@@ -97,7 +97,7 @@ public class Function extends Expression implements FunctionCall {
public
static
final
int
CURDATE
=
100
,
CURTIME
=
101
,
DATE_ADD
=
102
,
DATE_DIFF
=
103
,
DAY_NAME
=
104
,
DAY_OF_MONTH
=
105
,
DAY_OF_WEEK
=
106
,
DAY_OF_YEAR
=
107
,
HOUR
=
108
,
MINUTE
=
109
,
MONTH
=
110
,
MONTH_NAME
=
111
,
NOW
=
112
,
QUARTER
=
113
,
MONTH
=
110
,
MONTH_NAME
=
111
,
LOCALTIMESTAMP
=
112
,
QUARTER
=
113
,
SECOND
=
114
,
WEEK
=
115
,
YEAR
=
116
,
CURRENT_DATE
=
117
,
CURRENT_TIME
=
118
,
CURRENT_TIMESTAMP
=
119
,
EXTRACT
=
120
,
FORMATDATETIME
=
121
,
PARSEDATETIME
=
122
,
ISO_YEAR
=
123
,
...
...
@@ -304,7 +304,9 @@ public class Function extends Expression implements FunctionCall {
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"SYSTIMESTAMP"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"NOW"
,
NOW
,
addFunctionNotDeterministic
(
"LOCALTIMESTAMP"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunctionNotDeterministic
(
"NOW"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunction
(
"DATEADD"
,
DATE_ADD
,
3
,
Value
.
TIMESTAMP
);
...
...
@@ -830,7 +832,7 @@ public class Function extends Expression implements FunctionCall {
result
=
session
.
getTransactionStart
().
convertTo
(
Value
.
TIME
);
break
;
}
case
NOW
:
{
case
LOCALTIMESTAMP
:
{
Value
vt
=
session
.
getTransactionStart
().
convertTo
(
Value
.
TIMESTAMP
);
result
=
v0
==
null
?
vt
:
vt
.
convertScale
(
false
,
v0
.
getInt
());
break
;
...
...
@@ -2060,7 +2062,7 @@ public class Function extends Expression implements FunctionCall {
case
GREATEST:
min
=
1
;
break
;
case
NOW
:
case
LOCALTIMESTAMP
:
case
CURRENT_TIMESTAMP:
case
RAND:
max
=
1
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
浏览文件 @
695c4a99
...
...
@@ -1545,9 +1545,9 @@ public class JdbcDatabaseMetaData extends TraceObject implements
* <pre>
* ALL, CHECK, CONSTRAINT, CROSS, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
* DISTINCT, EXCEPT, EXISTS, FALSE, FETCH, FOR, FOREIGN, FROM, FULL, GROUP,
* HAVING, INNER, INTERSECT, INTERSECTS, IS, JOIN, LIKE, LIMIT,
MINUS, NATURAL
,
*
NOT, NULL, OFFSET, ON, ORDER, PRIMARY, ROWNUM, SELECT, SYSDATE, SYSTIM
E,
* SYSTIMESTAMP, TODAY, TOP, TRUE, UNION, UNIQUE, WHERE, WITH
* HAVING, INNER, INTERSECT, INTERSECTS, IS, JOIN, LIKE, LIMIT,
LOCALTIMESTAMP
,
*
MINUS, NATURAL, NOT, NULL, OFFSET, ON, ORDER, PRIMARY, ROWNUM, SELECT, SYSDAT
E,
* SYSTIME
, SYSTIME
STAMP, TODAY, TOP, TRUE, UNION, UNIQUE, WHERE, WITH
* </pre>
*
* @return a list of additional the keywords
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/ParserUtil.java
浏览文件 @
695c4a99
...
...
@@ -147,10 +147,15 @@ public class ParserUtil {
case
'J'
:
return
getKeywordOrIdentifier
(
s
,
"JOIN"
,
KEYWORD
);
case
'L'
:
if
(
"LIMIT"
.
equals
(
s
))
{
if
(
"LIMIT"
.
equals
(
s
)
||
"LIKE"
.
equals
(
s
)
)
{
return
KEYWORD
;
}
return
getKeywordOrIdentifier
(
s
,
"LIKE"
,
KEYWORD
);
if
(
additionalKeywords
)
{
if
(
"LOCALTIMESTAMP"
.
equals
(
s
))
{
return
KEYWORD
;
}
}
return
IDENTIFIER
;
case
'M'
:
return
getKeywordOrIdentifier
(
s
,
"MINUS"
,
KEYWORD
);
case
'N'
:
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/functions/timeanddate/current_timestamp.sql
浏览文件 @
695c4a99
...
...
@@ -2,3 +2,9 @@
-- and the EPL 1.0 (http://h2database.com/html/license.html).
-- Initial Developer: H2 Group
--
SELECT
CAST
(
CURRENT_TIMESTAMP
AS
TIMESTAMP
)
=
LOCALTIMESTAMP
;
>>
TRUE
SELECT
CAST
(
CURRENT_TIMESTAMP
(
0
)
AS
TIMESTAMP
)
=
LOCALTIMESTAMP
(
0
);
>>
TRUE
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论