Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
6b216090
提交
6b216090
authored
7 年前
作者:
Stéphane Eintrazi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement 'DECADE' in 'DATE_TRUNC'
上级
c7dd089e
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
68 行增加
和
8 行删除
+68
-8
Function.java
h2/src/main/org/h2/expression/Function.java
+1
-1
DateTimeFunctions.java
h2/src/main/org/h2/util/DateTimeFunctions.java
+11
-3
date_trunc.sql
.../org/h2/test/scripts/functions/timeanddate/date_trunc.sql
+56
-4
没有找到文件。
h2/src/main/org/h2/expression/Function.java
浏览文件 @
6b216090
...
@@ -107,7 +107,7 @@ public class Function extends Expression implements FunctionCall {
...
@@ -107,7 +107,7 @@ public class Function extends Expression implements FunctionCall {
* Pseudo functions for DATEADD, DATEDIFF, and EXTRACT.
* Pseudo functions for DATEADD, DATEDIFF, and EXTRACT.
*/
*/
public
static
final
int
MILLISECOND
=
126
,
EPOCH
=
127
,
MICROSECOND
=
128
,
NANOSECOND
=
129
,
public
static
final
int
MILLISECOND
=
126
,
EPOCH
=
127
,
MICROSECOND
=
128
,
NANOSECOND
=
129
,
TIMEZONE_HOUR
=
130
,
TIMEZONE_MINUTE
=
131
;
TIMEZONE_HOUR
=
130
,
TIMEZONE_MINUTE
=
131
,
DECADE
=
132
;
public
static
final
int
DATABASE
=
150
,
USER
=
151
,
CURRENT_USER
=
152
,
public
static
final
int
DATABASE
=
150
,
USER
=
151
,
CURRENT_USER
=
152
,
IDENTITY
=
153
,
SCOPE_IDENTITY
=
154
,
AUTOCOMMIT
=
155
,
IDENTITY
=
153
,
SCOPE_IDENTITY
=
154
,
AUTOCOMMIT
=
155
,
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/DateTimeFunctions.java
浏览文件 @
6b216090
...
@@ -8,6 +8,7 @@ package org.h2.util;
...
@@ -8,6 +8,7 @@ package org.h2.util;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_MONTH
;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_MONTH
;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_WEEK
;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_WEEK
;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_YEAR
;
import
static
org
.
h2
.
expression
.
Function
.
DAY_OF_YEAR
;
import
static
org
.
h2
.
expression
.
Function
.
DECADE
;
import
static
org
.
h2
.
expression
.
Function
.
EPOCH
;
import
static
org
.
h2
.
expression
.
Function
.
EPOCH
;
import
static
org
.
h2
.
expression
.
Function
.
HOUR
;
import
static
org
.
h2
.
expression
.
Function
.
HOUR
;
import
static
org
.
h2
.
expression
.
Function
.
ISO_DAY_OF_WEEK
;
import
static
org
.
h2
.
expression
.
Function
.
ISO_DAY_OF_WEEK
;
...
@@ -24,7 +25,6 @@ import static org.h2.expression.Function.TIMEZONE_HOUR;
...
@@ -24,7 +25,6 @@ import static org.h2.expression.Function.TIMEZONE_HOUR;
import
static
org
.
h2
.
expression
.
Function
.
TIMEZONE_MINUTE
;
import
static
org
.
h2
.
expression
.
Function
.
TIMEZONE_MINUTE
;
import
static
org
.
h2
.
expression
.
Function
.
WEEK
;
import
static
org
.
h2
.
expression
.
Function
.
WEEK
;
import
static
org
.
h2
.
expression
.
Function
.
YEAR
;
import
static
org
.
h2
.
expression
.
Function
.
YEAR
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.DateFormatSymbols
;
import
java.text.DateFormatSymbols
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
...
@@ -32,7 +32,6 @@ import java.util.GregorianCalendar;
...
@@ -32,7 +32,6 @@ import java.util.GregorianCalendar;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.Locale
;
import
java.util.TimeZone
;
import
java.util.TimeZone
;
import
org.h2.api.ErrorCode
;
import
org.h2.api.ErrorCode
;
import
org.h2.expression.Function
;
import
org.h2.expression.Function
;
import
org.h2.message.DbException
;
import
org.h2.message.DbException
;
...
@@ -105,6 +104,7 @@ public final class DateTimeFunctions {
...
@@ -105,6 +104,7 @@ public final class DateTimeFunctions {
DATE_PART
.
put
(
"NS"
,
NANOSECOND
);
DATE_PART
.
put
(
"NS"
,
NANOSECOND
);
DATE_PART
.
put
(
"TIMEZONE_HOUR"
,
TIMEZONE_HOUR
);
DATE_PART
.
put
(
"TIMEZONE_HOUR"
,
TIMEZONE_HOUR
);
DATE_PART
.
put
(
"TIMEZONE_MINUTE"
,
TIMEZONE_MINUTE
);
DATE_PART
.
put
(
"TIMEZONE_MINUTE"
,
TIMEZONE_MINUTE
);
DATE_PART
.
put
(
"DECADE"
,
DECADE
);
}
}
/**
/**
...
@@ -216,7 +216,7 @@ public final class DateTimeFunctions {
...
@@ -216,7 +216,7 @@ public final class DateTimeFunctions {
}
}
/**
/**
* Calculate the number of crossed unit boundaries between two timestamps. This
* Calculate the number
)
of crossed unit boundaries between two timestamps. This
* method is supported for MS SQL Server compatibility.
* method is supported for MS SQL Server compatibility.
*
*
* <pre>
* <pre>
...
@@ -485,6 +485,14 @@ public final class DateTimeFunctions {
...
@@ -485,6 +485,14 @@ public final class DateTimeFunctions {
timeNanos
=
0
l
;
timeNanos
=
0
l
;
break
;
break
;
case
DECADE:
long
yearForDecade
=
DateTimeUtils
.
yearFromDateValue
(
dateValue
);
yearForDecade
=
(
long
)
(
Math
.
floor
(
yearForDecade
/
10
)
*
10
);
dateValue
=
DateTimeUtils
.
dateValue
(
yearForDecade
,
1
,
1
);
timeNanos
=
0
l
;
break
;
}
}
if
(
timeNanos
==
null
)
{
if
(
timeNanos
==
null
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/functions/timeanddate/date_trunc.sql
浏览文件 @
6b216090
...
@@ -870,6 +870,62 @@ SELECT DATE_TRUNC('year', '2015-05-29 15:14:13');
...
@@ -870,6 +870,62 @@ SELECT DATE_TRUNC('year', '2015-05-29 15:14:13');
SELECT
DATE_TRUNC
(
'YEAR'
,
'2015-05-29 15:14:13'
);
SELECT
DATE_TRUNC
(
'YEAR'
,
'2015-05-29 15:14:13'
);
>>
2015
-
01
-
01
00
:
00
:
00
>>
2015
-
01
-
01
00
:
00
:
00
--
-- Test time unit 'DECADE'
--
select
DATE_TRUNC
(
'decade'
,
time
'00:00:00'
);
>>
1970
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'DECADE'
,
time
'00:00:00'
);
>>
1970
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'decade'
,
time
'15:14:13'
);
>>
1970
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'DECADE'
,
time
'15:14:13'
);
>>
1970
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'decade'
,
date
'2015-05-28'
);
>>
2010
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'DECADE'
,
date
'2015-05-28'
);
>>
2010
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'decade'
,
timestamp
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'DECADE'
,
timestamp
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
select
DATE_TRUNC
(
'decade'
,
timestamp
with
time
zone
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
+
00
select
DATE_TRUNC
(
'DECADE'
,
timestamp
with
time
zone
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
+
00
select
DATE_TRUNC
(
'decade'
,
timestamp
with
time
zone
'2015-05-29 05:14:13-06'
);
>>
2010
-
01
-
01
00
:
00
:
00
-
06
select
DATE_TRUNC
(
'DECADE'
,
timestamp
with
time
zone
'2015-05-29 05:14:13-06'
);
>>
2010
-
01
-
01
00
:
00
:
00
-
06
select
DATE_TRUNC
(
'decade'
,
timestamp
with
time
zone
'2015-05-29 15:14:13+10'
);
>>
2010
-
01
-
01
00
:
00
:
00
+
10
select
DATE_TRUNC
(
'DECADE'
,
timestamp
with
time
zone
'2015-05-29 15:14:13+10'
);
>>
2010
-
01
-
01
00
:
00
:
00
+
10
SELECT
DATE_TRUNC
(
'decade'
,
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
SELECT
DATE_TRUNC
(
'DECADE'
,
'2015-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
SELECT
DATE_TRUNC
(
'decade'
,
'2010-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
SELECT
DATE_TRUNC
(
'DECADE'
,
'2010-05-29 15:14:13'
);
>>
2010
-
01
-
01
00
:
00
:
00
--
--
-- Test unhandled time unit
-- Test unhandled time unit
...
@@ -877,11 +933,7 @@ SELECT DATE_TRUNC('YEAR', '2015-05-29 15:14:13');
...
@@ -877,11 +933,7 @@ SELECT DATE_TRUNC('YEAR', '2015-05-29 15:14:13');
SELECT
DATE_TRUNC
(
'---'
,
'2015-05-29 15:14:13'
);
SELECT
DATE_TRUNC
(
'---'
,
'2015-05-29 15:14:13'
);
>
exception
>
exception
SELECT
DATE_TRUNC
(
'decade'
,
'2015-05-29 15:14:13'
);
>
exception
SELECT
DATE_TRUNC
(
'DECADE'
,
'2015-05-29 15:14:13'
);
>
exception
SELECT
DATE_TRUNC
(
'century'
,
'2015-05-29 15:14:13'
);
SELECT
DATE_TRUNC
(
'century'
,
'2015-05-29 15:14:13'
);
>
exception
>
exception
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论