IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 金仓数据库 KingbaseES SQL 语言参考手册 (3.1.1.4. 日期/时间类型) -> 正文阅读

[大数据]金仓数据库 KingbaseES SQL 语言参考手册 (3.1.1.4. 日期/时间类型)

3.1.1.4.?日期/时间类型

日期时间数据类型为date 、timestamp[ (p)] [ without time zone ]、 timestamp[ (p) ] with time zone、 timestamp[ (p)] with local time zone、 time [ (p) ] [ without time zone ]、 time [ (p) ] with time zone 。 间隔数据类型为interval [ fields] [("p") ]。

日期时间的输入格式,包括 ISO 8601、SQL-兼容的、传统 KingbaseE的和其他的形式。对于一些格式,日期输入里的日、月和年的顺序会让人混淆,支持指定所预期的这些域的顺序。 把 DateStyle 参数设置为 MDY,表示"月-日-年",设置为 DMY 就是"日-月-年",设置为 YMD,表示"年-月-日"。

KingbaseES 在处理日期/时间输入输出上比SQL标准更灵活。

KingbaseES 有四个STRING类型的参数,设置日期/时间输入输出格式。

STRING类型的参数

默认格式

NLS_DATE_FORMAT

YYYY-MM-DD HH24:MI:SS

ORA_DATE_STYLE

YYYY-MM-DD HH24:MI:SS

NLS_TIMESTAMP_FORMAT

YYYY-MM-DD HH24:mi:ss.FF

NLS_TIMESTAMP_TZ_FORMAT

YYYY-MM-DD HH24:mi:ss.FF TZH:TZM

说明:这四个参数需在 Oracle 模式下,且参数 ORA_STYLE_NLS_DATE_FORMAT 处于打开的情况下生效。

3.1.1.4.1.?DATE数据类型

语法:DATE

DATE数据类型存储日期和时间值。每一个DATE日期值KingbaseES存储如下值:年、月、日、时、分、秒。 TO_DATE 函数可以将字符或者数值转换为date 值。日期或者时间的输入需要由单引号括起来。

DATE类型可能的输入方式

表 3.1.29?日期输入

例子

描述

1999-01-08

ISO 8601; 任何模式下的1月8日 (推荐格式)

January 8, 1999

在任何datestyle输入模式下都无歧义

1/8/1999

MDY模式中的1月8日;DMY模式中的8月1日

1/18/1999

MDY模式中的1月18日;在其他模式中被拒绝

01/02/03

MDY模式中的2003年1月2日;?DMY模式中的2003年2月1日;?YMD模式中的2001年2月3日

1999-Jan-08

任何模式下的1月8日

Jan-08-1999

任何模式下的1月8日

08-Jan-1999

任何模式下的1月8日

99-Jan-08

YMD模式中的1月8日,否则错误

08-Jan-99

1月8日,除了在YMD模式中错误

Jan-08-99

1月8日,除了在YMD模式中错误

19990108

ISO 8601; 任何模式中的1999年1月8日

990108

ISO 8601; 任何模式中的1999年1月8日

19990108

年和一年中的日子

J2451187

儒略日期

January 8, 99 BC

公元前99年

3.1.1.4.2.?TIME数据类型

时间类型包括 time [ (p) ] without time zone 和 time [ (p) ] with time zone。

3.1.1.4.2.1.?time [ (p) ] with time zone类型

语法:time [ (p) ] with time zone

表示一个带时区的 TIME值,包括时、分、秒信息, 定义了一个在'00:00:00.000000'和'23:59:59.999999'之间的有效时间。 p表示秒精度即秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,在精度上没有明确的边界。

3.1.1.4.2.2.?time [ (p) ] without time zone类型

语法:time [ (p) ] without time zone

表示一个不带带时区的 TIME 值,其他取值与带时区的相同。

3.1.1.4.2.3.?time

语法:time 相当于time without time zone。

3.1.1.4.3.?TIMESTAMP 数据类型

包括标准时区类型 timestamp[ (p)] [ without time zone ]、timestamp[ (p) ] with time zone 和本地时类型timestamp[ (p)] with local time zone。

3.1.1.4.3.1.?timestamp[ (p)] [ without time zone ]类型

语法:timestamp[ (p)] [ without time zone ]

描述一个不带时区的 TIMESTAMP 值,包括年、月、日、时、分、秒信息。 p表示秒精度即秒字段中小数点后面的位数,取值范围为 0~6,如果未定义,在精度上没有明确的边界。

3.1.1.4.3.2.?timestamp[ (p)] with time zone类型

语法:timestamp[ (p)] with time zone

描述一个不带时区的 TIMESTAMP 值,其定义是在 TIMESTAMP类型的后面加上时 区信息。时区的取值范围:取值范围:-12:59 ~ +14:00 之间。 例如:TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02'。

对于 timestamp with time zone,内部存储的值总是 UTC (全球统一时间,以前也叫格林威治时间GMT)。如果一个输入值有明确的时区声明,那么它将用该时区合适的偏移量转换成 UTC。如果在输入串里没有时区声明,那么它就被假设是在系统的 TimeZone 参数里的那个时区,然后使用这个 TimeZone 时区的偏移转换成 UTC。

如果一个 timestamp with time zone 值被输出,那么它总是从 UTC 转换成当前的 TimeZone时区,并且显示为该时区的本地时间。要看其它时区的时间,要么修改 timezone,要么使用 AT TIME ZONE 。

时区名和缩写从存储在安装目录下的.../share/timezone/和.../share/timezonesets/子目录中获取的。 TimeZone 配置参数可以在文件 kingbase.conf 中被设置,或者通过服务器配置参数参考手册中描述的任何一种标准方法设置。

语法:timestamp[ (p)] with local time zone

表示本地时区的TIMESTAMP值,时区的取值范围:取值范围:-12:59 ~ +14:00 之间。

3.1.1.4.4.?INTERVAL数据类型

语法:interval [ fields] [('p')]

Fields 可选项如下:

Fields 选项

描述

YEAR

描述若干年的间隔 INTERVAL YEAR '9'

MONTH

描述若干月的间隔 INTERVAL MONTH '9'

DAY

描述若干天的间隔 INTERVAL DAY '9'

HOUR

描述若干小时的间隔 INTERVAL HOUR '9'

MINUTE

描述若干分钟的间隔 INTERVAL MINUTE '9'

SECOND

描述若干分钟的间隔 INTERVAL MINUTE '9'

YEAR TO MONTH

描述若干年若干月间隔 INTERVAL YEAR TO MONTH '10-9'

YEAR_MONTH

描述若干年若干月间隔,兼容MySQL

DAY TO HOUR

描述若干天若干小时间隔 INTERVAL DAY TO HOUR '10 9'

DAY_HOUR

描述若干天若干小时间隔,兼容MySQL

DAY TO MINUTE

描述若干天若干分钟间隔 INTERVAL DAY TO MINUTE '10 9:09'

DAY_MINUTE

描述若干天若干分钟间隔,兼容MySQL

DAY TO SECOND

描述若干天若干秒间隔 INTERVAL DAY TO SECOND '10 9:09:50'

DAY_SECOND

描述若干天若干秒间隔,兼容MySQL

HOUR TO MINUTE

描述若干小时若干分钟间隔 INTERVAL HOUR TO MINUTE '10:09'

HOUR_MINUTE

描述若干小时若干分钟间隔,兼容MySQL

HOUR TO SECOND

描述若干小时若干秒间隔 INTERVAL HOUR TO SECOND '10:09:10'

HOUR_SECOND

描述若干小时若干秒间隔,兼容MySQL

MINUTE TO SECOND

描述若干分钟若干秒间隔 INTERVAL MINUTE TO SECOND ' 09:10'

MINUTE_SECOND

描述若干分钟若干秒间隔,兼容MySQL

兼容 mysql unit 类型,开启mysql_interval_style 参数,set mysql_interval_style to on才能生效。 P 表示精度, 如果 "p"被指定,"fields"必须包括 SECOND,因为精度只应用于秒。

语法:[@] quantity unit [quantity unit...] [direction]

quantity 表示一个可以带符号的数字; unit 是millisecond、second、minute、hour、day、week、month、year、decade、century、millennium 或者缩写或者这些单位的复数;

direction 取值为 ago 。表示对所有域求反。

如果 IntervalStyle 被设置为 kingbase_verbose,该语法也被用于间隔输出。 日、小时、分钟和秒的数量可以不适用显式的单位标记指定。例如,'1 12:59:10'被读作'1 day 12 hours 59 min 10 sec'。同样,一个年和月的组合可以使用一个横线指定,例如'200-10'被读作'200 年 10 个月'。

语法:P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]

该串必须以一个 P 开始,并且可以包括一个当日时间单位的 T。单位可以被忽略,也可以以任何顺序指定,但是小于一天的单位必须出现在 T 之后。特别地,M 的含义取决于它出现在 T 之前还是之后。

可用的单位缩写如下表:

表 3.1.30?ISO 8601 间隔单位缩写

缩写

含义

Y

M

月(在日期部分中)

W

D

H

小时

M

分钟 (在时间部分中)

S

语法:P [ years-months-days ] [ T hours:minutes:seconds ]

以 P 开始,并且 T 将时间间隔的日期和时间部分分隔开。 KingbaseES 允许域具有不同的符号,并且认为以常量表示的每个域具有独立的符号,因此在例子'-1 2:03:04'中,日为负数,小时、分钟和秒部分被认为是正值。

如果 IntervalStyle 被设置为 sql_standard,则最前面的符号将被认为是应用于所有域 (但是仅当没有额外符号出现),在例子'-1 2:03:04'中,负号会被应用于日、小时、分钟和秒部分。 为了避免混淆,我们推荐在任何域为负值时为每一个域都附加一个显式的符号。

下表展示了一些有效interval输入的例子。

表 3.1.31?间隔输入

例子

描述

1-2

SQL标准格式:1年2个月

3 4:05:06

SQL标准格式:3日4小时5分钟6秒

1 year 2 months 3 days 4 hours 5 minutes 6 seconds

传统Kingbase 格式:1年2个月3日4小时5分钟6秒钟

P1Y2M3DT4h4M6S

“带标志符的”ISO 8601 格式:含义同上

P0001-02-03T04:05:06

ISO 8601 的“替代格式”:含义同上

在内部,interval值被存储为months、days以及seconds。之所以这样做是因为一个月中的天数是变化的,并且在涉及到夏令时调整时一天可以有23或者25个小时。months以及days域是整数,而seconds域可以存储分数。因为区间通常是从常量字符串或者timestamp减法创建而来,这种存储方法在大部分情况下都很好,但是也可能导致预料之外的结果:

SELECT EXTRACT(hours from '80 minutes'::interval);
 date_part
-----------
         1

SELECT EXTRACT(days from '80 hours'::interval);
 date_part
-----------
         0

函数justify_daysjustify_hours可以用来调整溢出其正常范围之外的days和hours。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:56:33  更:2022-07-20 18:59:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:35:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码