日期类型
GaussDB 100目前支持的日期/时间类型包括DATE、带时区和不带时区的时间戳以及时间间隔。
DATETIME/DATE
语法:
DATETIME
功能:存储不带时区的日期类型数据。
保存年、月、日、时、分、秒。
取值范围:[0001-01-01 00:00:00,9999-12-31 23:59:59]。
占用空间:8字节。
对应关键字:
- DATE
- DATETIME
TIMESTAMP
语法:
TIMESTAMP[(n)]
功能:存储不带时区的时间戳类型数据。
- 保存年、月、日、时、分、秒,微秒。
- n取值范围[0,6],表示秒后面的精度。TIMESTAMP(n)也可以不带参数,即写为TIMESTAMP,这时秒后面小数位数的精度默认为6。
取值范围:[0001-01-01 00:00:00.000000,9999-12-31 23:59:59.999999]。
占用空间:8字节。
对应关键字:TIMESTAMP
TIMESTAMP(n) WITH TIME ZONE
语法:
TIMESTAMP(n) WITH TIME ZONE
功能:存储带时区的时间戳类型数据。
- 保存年、月、日、时、分、秒,微秒,时区。
- n取值范围[0,6],表示秒后面的精度。TIMESTAMP(n)也可以不带参数,即写为TIMESTAMP,这时秒后面小数位数的精度默认为6。
取值范围:[0001-01-01 00:00:00.000000,9999-12-31 23:59:59.999999]。
占用空间:12字节。
对应关键字:TIMESTAMP(n) WITH TIME ZONE
TIMESTAMP(n) WITH LOCAL TIME ZONE
语法:
TIMESTAMP(n) WITH LOCAL TIME ZONE
功能:带时区的时间戳类型数据。不存储时区,存储时转换为数据库时区的TIMESTAMP,用户查看时转换为当前会话所在时区的TIMESTAMP,TIMESTAMP(n)也可以不带参数,即写为TIMESTAMP,这时秒后面小数位数的精度默认为6。
占用空间:8字节。
对应关键字:TIMESTAMP(n) WITH LOCAL TIME ZONE
日期类型的格式控制符
日期类型的格式控制符见表1。并不是所有的格式化字符串都可以转换,只有在格式控制符表中被标定为可逆的控制符才允许转换。
表1 日期类型的格式控制符 符号
说明
转换是否可逆
示例
" "(空格)、"-"(中划线)、
"\"、"/" 、":"、
","、"."、";"、"X"
分隔符
是
--用分隔符"X"分隔日期类型数据中的秒和毫秒。 select to_timestamp('2017-09-11 23:45:59.44', 'YYYY-MM-DD HH24:MI:SSXFF6') from SYS_DUMMY;
--用分隔符"-"(中划线)、"/"、":"、 "."分隔日期类型数据。 select to_char(systimestamp, 'YYYY-MM/DD HH24.MI:SS.FF') from SYS_DUMMY;
--用分隔符" "(空格)、"\"、","、 ";"分隔日期类型数据。 select to_char(systimestamp, 'YYYY MM\DD HH24.MI;SS,FF') from SYS_DUMMY;
"text"
文本类型
是
文本类型,作为输出参数时,输出引号中包含的内容;作为输入参数时,跳过引号中的内容,忽略空格。
select to_char(sysdate, '"Hello world!"') from SYS_DUMMY;
AM、PM
上午和下午指示符
否
select to_char(systimestamp, 'HH12:MI:SS AM') from SYS_DUMMY;
CC
世纪
否
select to_char(systimestamp, 'CC') from SYS_DUMMY;
DAY
星期天全称
否
select to_char(systimestamp, 'DAY') from SYS_DUMMY;
DY
星期天简称
否
select to_char(systimestamp, 'DY') from SYS_DUMMY;
DDD
一年中的第几天
否
select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'DDD') from SYS_DUMMY;
DD
当前月中的第几天
是
select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'DD') from SYS_DUMMY;
D
当前周中的第几天
否
select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'D') from SYS_DUMMY;
FF3、
FF6、
FF(默认FF6)
秒的小数部分
是
select to_char(systimestamp, 'FF3') from SYS_DUMMY;
HH12、
HH24 、
HH(默认HH12)
12小时制/24小时制
是
select to_char(systimestamp, 'HH,HH12,HH24') from SYS_DUMMY;
MI
时间的分钟数(0 ~ 59)
是
-
MM
日期的月份(1 ~ 12)
是
-
MONTH
日期中月份全称
是
select to_char(systimestamp, 'MONTH, MON') from SYS_DUMMY;
MON
日期中月份简称
是
-
Q
当前日期的季度(1 ~ 4)
否
-
SSSSS
一天中已经逝去的秒数(0 ~ 86400 - 1)
否
-
SS
时间中的秒数(0 ~ 59)
是
-
WW
当前日期为该年份的week数,即当年的第几周,第一周从当年第一天计算起,每周7天
否
-
W
当前日期为该月份的week数,即当月的第几周,第一周从当月第一天计算起,每周7天
否
-
YYYY
四位年份
是
-
YYY
三位年份,如2018年可以写作018
否
-
YY
两位年份,如2018年可以写作18
否
-
Y
一位年份,如2018年可以写作8
否
select to_char(systimestamp, 'Y') from SYS_DUMMY;
TZH
时区信息的小时数
是
select to_char(current_timestamp , 'TZH') from SYS_DUMMY;
TZM
时区信息的分钟数
是
select to_char(current_timestamp , 'TZM') from SYS_DUMMY;
系统同时也对日期类型提供默认的输出格式,如表2。
表2 日期类型默认输出格式 日期类型
默认输出格式
DATETIME
YYYY-MM-DD HH24:MI:SS
TIMESTAMP
YYYY-MM-DD HH24:MI:SS.FF
TIMESTAMP WITH TIME ZONE
YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
TIMESTAMP WITH LOCAL TIME ZONE
YYYY-MM-DD HH24:MI:SS.FF
示例
- 通过格式控制符的描述,可以用to_char函数指定时期类型的输出格式,如下示例:
SELECT to_char(sysdate, 'MON-YY-DD') FROM SYS_DUMMY; TO_CHAR(SYSDATE, 'MON-YY-DD') ----------------------------- JAN-18-07 1 rows fetched. SELECT to_char(sysdate, 'MON-YY-DD HH:MI:SS AM') FROM SYS_DUMMY; TO_CHAR(SYSDATE, 'MON-YY-DD HH ------------------------------- JAN-18-07 05:01:15 AM 1 rows fetched.
- 日期类型默认输出格式参见以下示例:
SELECT sysdate, systimestamp FROM SYS_DUMMY; SYSDATE SYSTIMESTAMP ---------------------- ---------------------------------------- 2018-01-07 17:18:18 2018-01-07 17:18:18.230000 +08:00 1 rows fetched.
- 使用格式控制符将一个字符串转化为日期类型:
SELECT to_date('07-JAN-2018', 'DD-MON-YYYY') FROM SYS_DUMMY; TO_DATE('07-JAN-2018', 'DD-MON-YYYY') ------------------------------------- 2018-01-07 00:00:00 1 rows fetched.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论