DATE 数据类型存储日期和时间信息。尽管日期和时间信息可以用字符和数字数据类型表示,但 DATE 数据类型具有特殊的关联属性。对于每个 DATE 值,OceaBase 存储以下信息:年、月、日、小时、分钟和秒,但是并不包含时区信息。

格式

DATE 数据类型的默认输入输出格式由 NLS_DATE_FORMAT 决定,运行以下 SQL 语句查看默认格式:

  1. SELECT @@NLS_DATE_FORMAT FROM DUAL;

返回结果:

  1. DD-MON-RR

如果您需要自定义数据的格式,可以使用转换函数。在插入数据时,您可以通过函数 TO_DATE (char,fmt) 指定数据的输入格式。查询数据时,您可以通过函数 TO_CHAR (datetime,fmt) 指定数据的输出格式。这两个转换函数会将字符串转化为参数 fmt 中定义的格式。在 fmt 未指明的情况下,使用默认格式。

注意: DATE 数据类型储存小时、分钟和秒等时间信息,但是默认格式中并不包含时间信息。

取值范围

0001-01-01 00:00:00~9999-12-31 23:59:59

示例

  • 示例1: 返回当前的系统日期,由于未指定参数 fmt,所以 TO_CHAR 按数据类型的默认格式返回数据。
  1. SELECT TO_CHAR(sysdate) FROM DUAL;

返回结果:

  1. +------------------+
  2. | TO_CHAR(SYSDATE) |
  3. +------------------+
  4. | 24-FEB-20 |
  5. +------------------+
  • 示例2: 在未指定 DATE 字面量的情况下,数据库将返回系统默认值:

  • 年:当前年份,由 SYSDATE 返回。

  • 月:当前月份,由 SYSDATE 返回。
  • 日:01,默认是当前月的第一天。
  • 小时、分钟和秒均为 0。

本示例将使用 TO_DATE(string, format) 插入日期数据。TO_DATE 会将 string 中的字符串转化为format 中定义的格式。

例如当前查询是 2020 年 2 月发出的:

  1. SELECT TO_CHAR(TO_DATE('2020', 'YYYY'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

返回结果:

  1. +----------------------------------------------------------+
  2. | TO_CHAR(TO_DATE('2020', 'YYYY'),'YYYY-MM-DD HH24:MI:SS') |
  3. +----------------------------------------------------------+
  4. | 2020-02-01 00:00:00|
  5. +----------------------------------------------------------+