YashanDB EXTRACT函数

83 阅读2分钟

EXTRACT函数对给定参数expr进行年、月、日、小时、分、秒等数值的提取,其返回值类型有以下几种情况:

  • 当expr值为NULL时,返回NULL。
  • 当expr值的数据类型不为DATE、TIMESTAMP、TIME、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH时,返回类型不符合预期。
  • expr值的数据类型与年、月、日、小时、分、秒的指定存在如下对应关系,其中出现N/A时返回Illegal format错误,否则按最后一列类型返回:
FieldTIMESTAMPTIMEDATEINTERVAL DAY TO SECONDINTERVAL YEAR TO MONTH返回类型
DAY一个月中的日
(1-31)N/A一个月中的日
(1-31)天数N/AINT
HOUR一天中的小时
(0-23)一天中的小时
(0-23)N/A一天中的小时
(0-23)N/AINT
MINUTE一小时中的分
(0-59)一小时中的分
(0-59)N/A一小时中的分
(0-59)N/AINT
MONTH一年中的月
(1-12)N/A一年中的月
(1-12)N/A月数INT
SECOND一分钟的秒
(0-59.999999)一分钟的秒
(0-59.999999)N/A一分钟的秒
(0-59.999999)N/ANUMBER
YEAR年份N/A年份N/A年数INT

示例

-- 创建times表,包含DATE、TIMESTAMP、TIME、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH类型的列字段
CREATE TABLE times (timea DATE DEFAULT SYSDATE,
timeb TIMESTAMP DEFAULT SYSDATE,
timec TIME DEFAULT SYSDATE,
timed INTERVAL DAY TO SECOND,
timee INTERVAL YEAR TO MONTH);
INSERT INTO times VALUES (DEFAULT,DEFAULT,DEFAULT,INTERVAL '5' DAY,INTERVAL '2' YEAR);
COMMIT;
 
SELECT timea,timeb,timec,timed,timee FROM times;
TIMEA                 TIMEB                        TIMEC             TIMED                TIMEE 
--------------------- ---------------------------- ----------------- -------------------- ------
2022-01-17 20:47:19   2022-01-17 20:47:19.000000   20:47:19.000000   +05 00:00:00.000000  +02-00
 
SELECT EXTRACT(YEAR FROM timea) Year,
EXTRACT(SECOND FROM timeb) Second,
EXTRACT(HOUR FROM timec) Hour,
EXTRACT(DAY FROM timed) Day,
EXTRACT(MONTH FROM timee) Month
FROM times;
        YEAR      SECOND         HOUR          DAY        MONTH
------------ ----------- ------------ ------------ ------------
        2022          19           20            5            0