本章讨论Teradata中可用的日期/时间函数.
日期存储
日期使用以下公式在内部存储为整数.
((YEAR - 1900) * 10000) + (MONTH * 100) + DAY
您可以使用以下查询来检查日期的存储方式.
SELECT CAST(CURRENT_DATE AS INTEGER);
由于日期存储为整数,因此您可以对它们执行一些算术运算. Teradata提供执行这些操作的功能.
EXTRACT
EXTRACT函数从DATE值中提取日,月和年的部分内容.此函数还用于从TIME/TIMESTAMP值中提取小时,分钟和秒.
示例
以下示例显示如何提取Year,Month来自日期和时间戳值的日期,小时,分钟和秒值.
SELECT EXTRACT(YEAR FROM CURRENT_DATE); EXTRACT(YEAR FROM Date) ----------------------- 2016 SELECT EXTRACT(MONTH FROM CURRENT_DATE); EXTRACT(MONTH FROM Date) ------------------------ 1 SELECT EXTRACT(DAY FROM CURRENT_DATE); EXTRACT(DAY FROM Date) ------------------------ 1 SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP); EXTRACT(HOUR FROM Current TimeStamp(6)) --------------------------------------- 4 SELECT EXTRACT(MINUTE FROM CURRENT_TIMESTAMP); EXTRACT(MINUTE FROM Current TimeStamp(6)) ----------------------------------------- 54 SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP); EXTRACT(SECOND FROM Current TimeStamp(6)) ----------------------------------------- 27.140000
INTERVAL
Teradata提供INTERVAL功能DATE和TIME值的算术运算.有两种类型的INTERVAL函数.
年 - 月间隔
年
每年一个月
MONTH
日间隔时间
DAY
DAY TO HOUR
DAY TO MINUTE
第二天
HOUR
小时开会
小时至第二次
MINUTE
分钟到第二次
SECOND
示例
以下示例将当前日期添加3年.
SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '03' YEAR; Date (Date+ 3) -------- --------- 16/01/01 19/01/01
以下示例将3年和01个月添加到当前日期.
SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '03-01' YEAR TO MONTH; Date (Date+ 3-01) -------- ------------ 16/01/01 19/02/01
以下示例将01天,05小时和10分钟添加到当前时间戳.
SELECT CURRENT_TIMESTAMP,CURRENT_TIMESTAMP + INTERVAL '01 05:10' DAY TO MINUTE; Current TimeStamp(6) (Current TimeStamp(6)+ 1 05:10) -------------------------------- -------------------------------- 2016-01-01 04:57:26.360000+00:00 2016-01-02 10:07:26.360000+00:00