绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
GaussDB 100 数据类型之日期类型
2020-02-19 11:40:56

日期类型

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

日期类型的格式控制符

日期类型的格式控制符见表1。并不是所有的格式化字符串都可以转换,只有在格式控制符表中被标定为可逆的控制符才允许转换。
表1 日期类型的格式控制符

符号

说明

转换是否可逆

示例

" "(空格)、"-"(减号)、

"\"、"/" 、":"、

","、"."、";"

分隔符

-

"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;
系统同时也对日期类型提供默认的输出格式,如表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 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.


分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~