Extract 函数的使用
以前我在 InterBase 论坛里谈到过 Extract 函数,后来有不少网友来信叫我再详细的谈谈它的使用。这里,我就将其写成一篇小文章,给大家介绍一下。
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等。
欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/db/InterBase/200512/17797.html