Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此,它支持其关健字 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、WEEKDAY、YEARDAY。
Extract 的使用语法为:
EXTRACT(关健字 FROM 日期或时间型字段)
例如:我们想从一个入库表(RK)的"入库时间(INTIME)"(此入库时间为 TIMESTAMP 型)字段内提取相应的时间数据。有如下形式:
语名 说明
SELECT EXTRACT(YEAR FROM INTIME) FROM RK 从INTIME字段中提取年份
SELECT EXTRACT(MONTH FROM INTIME) FROM RK 从INTIME字段中提取月份
SELECT EXTRACT(DAY FROM INTIME) FROM RK 从INTIME字段中提取日
SELECT EXTRACT(HOUR FROM INTIME) FROM RK 从INTIME字段中提取时
SELECT EXTRACT(MINUTE FROM INTIME) FROM RK 从INTIME字段中提取分
SELECT EXTRACT(SECOND FROM INTIME) FROM RK 从INTIME字段中提取秒
关举一个实际一点的例子:
假如我们想在一个数据表中生成一个含有发生日期及序列号的关健字段。这种情况在很多数据库应用中都会发生。
首先,我们应先定义一个 Generator,取名为 AUTOID,然后在相应的表中书写触发器,形式如下:
CREATE TRIGGER "TRI_BI_AUTOID" FOR "TABLE1"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.PBID=CAST(EXTRACT(YEAR FROM CAST('NOW' AS DATE)) AS VARCHAR(4))||
CAST(EXTRACT(MONTH FROM CAST('NOW' AS DATE)) AS VARCHAR(2))||
CAST(EXTRACT(DAY FROM CAST('NOW' AS DATE)) AS VARCHAR(2))||
CAST(GEN_ID(AUTOID,1) AS VARCHAR(12));
END
这样,一个能自动以日期及序列号为代码的字段数据就产生了。
当然 FROM 后面也支持:CURREND_TIMESTAMP、CURREND_DATE、CURREND_TIME等。
================
时间格式转时间戳
select extract(epoch from CAST('2021-09-07 00:00:00' as TIMESTAMP)) 或
select extract('epoch' from '2021-09-07 00:00:00'::TIMESTAMP)
CAST 转换数据类型
epoch 新纪元时间
EXTRACT(关健字 FROM 日期或时间型字段)
说明 :从xx 提取 xx ,例
SELECT EXTRACT(YEAR FROM INTIME) FROM RK 从INTIME字段中提取年份
当前时间戳
select extract(epoch from now())
时间戳转日期
select to_timestamp(1630984982)
时间戳转日期,并输出格式
select to_char(to_timestamp(1630984982),'YYYY-MM-DD HH24:MI:SS' )