5
日期
/
时间类型
KingbaseES
支持
SQL
中所有的日期和时间类型,如下表所示。这些数据类型上可用的操作如
时间
/
日期函数
和操作符
所述。日期根据公历来计算,即使对于该历法被引入之前的年份也一样。
表
7.5.1:
日期
/
时间类型
名字
存储
尺寸
描述
最小值
最大值
解析
度
timestamp[ (p
)] [ without
time zone ]
8
字
节
包括日期和时间(无
时区)
4713 BC
294276 AD
1
微
秒
timestamp[ (p
) ] with
time zone
8
字
节
包括日期和时间,有
时区
4713 BC
294276 AD
1
微
秒
timestamp[ (p
)] with lo
cal time zone
8
字
节
包括日期和时间,有
时区
4713 BC
294276 AD
1
微
秒
date
4
字
节
日期(没有一天中的
时间)
4713 BC
5874897 AD
1
日
time [ (p
) ] [ without time
zone ]
8
字
节
一天中的时间(无日
期)
00:00:00
24:00:00
1
微
秒
time [ (p
) ] with time zone
12
字节
仅仅是一天中的时
间(没有日期),带
有时区
00:00:00+1459
24:00:00-
1459
1
微
秒
int erval [ fields
] [
(
“p“
) ]
16
字节
时间间隔
-178000000
年
178000000
年
1
微
秒
Note:
SQL
要求只写
timestamp
等效于
timestamp without time zone
,并且
KingbaseES
鼓励这
种行为。
timestamptz
被接受为
timestamp with time zone
的一种简写,这是一种
KingbaseES
的扩
展。
time
、
timestamp
和
interval
接受一个可选的精度值
“p“
,这个精度值声明在秒域中小数点之后保留的
位数。缺省情况下,在精度上没有明确的边界。
“p“
允许的范围是从
0
到
6
。
interval
类型有一个附加选项,它可以通过写下面之一的短语来限制存储的
fields
的集合:
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
YEAR TO MONTH
YEAR_MONTH
DAY TO HOUR
DAY_HOUR
DAY TO MINUTE
DAY_MINUTE
DAY TO SECOND
DAY_SECOND
HOUR TO MINUTE
HOUR_MINUTE
HOUR TO SECOND
HOUR_SECOND
MINUTE TO SECOND
MINUTE_SECOND
Note:
YEAR_MONTH
、
DAY_HOUR
、
DAY_MINUTE
、
DAY_SECOND
、
HOUR_MINUTE
、
HOUR_SECOND
、
MINUTE_SECOND
是兼容
mysql unit
类型,需要通过
mysql_interval_style
参数开启,
set mysql_interval_style to
on
。
注意如果
“fields“
和
“p“
被指定,
“fields“
必须包括
SECOND
,因为精度只应用于秒。
类型
time with time zone
是
SQL
标准定义的,但是该定义显示出了一些会影响可用性的性质。在大
多数情况下,
date
、
time
、
timestamp without time zone
和
timestamp with time zone
的组
合就应该能提供任何应用所需的全范围的日期
/
时间功能。
5.1
日期
/
时间输入
日期和时间的输入可以接受几乎任何合理的格式,包括
ISO 8601
、
SQL-
兼容的、传统
KINGBASE
的和其他
的形式。对于一些格式,日期输入里的日、月和年的顺序会让人混淆,并且支持指定所预期的这些域的顺序。
把
DateStyle
参数设置为
MDY
,就是选择“月-日-年”的解释,设置为
DMY
就是“日-月-年”,而
YMD
是“年-月-日”。
KingbaseES
在 处 理 日 期
/
时 间 输 入 输 出 上 比
SQL
标 准 要 求 的 更 灵 活。 当 前
KingbaseES
存 在
四 个
STRING
类 型 的 参 数
NLS_DATE_FORMAT
、
ORA_DATE_STYLE
、
NLS_TIMESTAMP_FORMAT
、
NLS_TIMESTAMP_TZ_FORMAT
,默认值分别为
YYYY-MM-DD HH24:MI:SS
、
YYYY-MM-DD HH24:MI:SS
、
YYYY-MM-DD HH24:mi:ss.FF
、
YYYY-MM-DD HH24:mi:ss.FF TZH:TZM
,分别可由用户在一次连接中进行
指定
date
、
date
、
timestamp
、
timestamptz
的格式。例如将
NLS_DATE_FORMAT
参数设置为
YYYY-MM-DD
格式后,查询时
date
类型将默认输出‘
2021-08-01
’、‘
1985-12-28
’等样式的字符串;输入时,将默认按
照
YYYY-MM-DD
格式解析,能正确解析‘
2021-08-01
’、‘
1985-12-28
’等样式字符串日期,而无法解析
‘
08.01.2021
’、‘
12.28.1985
’等样式字符串。
ORA_DATE_STYLE
定义
date
,
NLS_TIMESTAMP_FORMAT
、
NLS_TIMESTAMP_TZ_FORMAT
分别定义
timestamp
、
timestamptz
类型的格式,皆同
NLS_DATE_FORMAT
参
数类似,影响日期
/
时间的默认输入与输出格式,此处不再赘述。具体的日期
/
时间输入输出格式的定义请参考
数
据类型格式化函数
章节。注意:
NLS_DATE_FORMAT
、
ORA_DATE_STYLE
、
NLS_TIMESTAMP_FORMAT
、
NLS_TIMESTAMP_TZ_FORMAT
参数需在
Oracle
模式下,且参数
ORA_STYLE_NLS_DATE_FORMAT
处于
打开的情况下生效。