日期类型
Gauss100 目前支持的日期/时间类型包括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) WITHLOCAL TIME ZONE
功能:带时区的时间戳类型的数据。不存储时区,存储时转换为数据库时区的TIMESTAMP,用户查看时转换为当前会话的时区的TIMESTAMP。
占用空间:8字节。
对应关键字:TIMESTAMP(n) WITHLOCAL TIME ZONE
日期类型的格式控制符
符号 | 说明 | 转换是否可逆 | 示例 |
---|---|---|---|
" "(空格)、"-"(减号)、 "\"、"/" 、":"、 ","、"."、";" | 分隔符 | 是 | - |
"text" | 文本类型 | 是 | 文本类型,作为输出参数时,输出引号中包含的内容;作为输入参数时,跳过引号中的内容,忽略空格。 select to_char(sysdate, '"Hello world!"') from dual; |
AM、PM | 上午和下午指示符 | 否 | select to_char(systimestamp, 'HH12:MI:SS AM') from dual; |
CC | 世纪 | 否 | select to_char(systimestamp, 'CC') from dual; |
DAY | 星期天全称 | 否 | select to_char(systimestamp, 'DAY') from dual; |
DY | 星期天简称 | 否 | select to_char(systimestamp, 'DY') from dual; |
DDD | 一年中的第几天 | 否 | select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'DDD') from dual; |
DD | 当前月中的第几天 | 是 | select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'DD') from dual; |
D | 当前周中的第几天 | 否 | select to_char(to_date('2018-01-07', 'YYYY-MM-DD'), 'D') from dual; |
FF3、 FF6、 FF(默认FF6) | 秒的小数部分 | 是 | select to_char(systimestamp, 'FF3') from dual; |
HH12、 HH24 、 HH(默认HH12) | 12小时制/24小时制 | 是 | select to_char(systimestamp, 'HH,HH12,HH24') from dual; |
MI | 时间的分钟数(0 ~ 59) | 是 | - |
MM | 日期的月份(1 ~ 12) | 是 | - |
MONTH | 日期中月份全称 | 是 | select to_char(systimestamp, 'MONTH, MON') from dual; |
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 dual; |
示例
通过格式控制符的描述,可以用to_char函数指定时期类型的输出格式,如下示例:
SELECT to_char(sysdate, 'MON-YY-DD') FROM dual;
TO_CHAR(SYSDATE, 'MON-YY-DD')
-----------------------------
JAN-18-07
1 rows fetched.
SELECT to_char(sysdate, 'MON-YY-DD HH:MI:SS AM') FROM dual;
TO_CHAR(SYSDATE, 'MON-YY-DD HH
-------------------------------
JAN-18-07 05:01:15 AM
1 rows fetched.
日期类型默认输出格式参见以下示例:
SELECT sysdate, systimestamp FROM dual;
SYSDATE SYSTIMESTAMP
---------------------------------------------------
2018-01-07 17:18:18 2018-01-07 17:18:18.230000
1 rows fetched.使用格式控制符将一个字符串转化为日期类型:
SELECT to_date('07-JAN-2018', 'DD-MON-YYYY') FROM dual;
TO_DATE('07-JAN-2018', 'DD-MON-YYYY')
-------------------------------------
2018-01-07 00:00:00
1 rows fetched.