Teradata 日期/时间函数
本章讨论 Teradata 中可用的日期/时间函数。
Date Storage
Dates are stored as integer internally using the following formula.
((YEAR - 1900) * 10000) + (MONTH * 100) + DAY
你可以使用以下查询来检查日期的存储方式。
SELECT CAST(CURRENT_DATE AS INTEGER);
由于日期存储为整数,因此你可以对它们执行一些算术运算。 Teradata 提供了执行这些操作的函数。
EXTRACT
EXTRACT 函数从 DATE 值中提取部分日、月和年。此函数还用于从 TIME/TIMESTAMP 值中提取小时、分钟和秒。
例子
以下示例显示如何从日期和时间戳值中提取年、月、日期、小时、分钟和秒值。
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 函数。
年月间隔
- YEAR
- 一年到一个月
- MONTH
日间间隔
- DAY
- 日复一日
- 日复一日
- 第二天
- HOUR
- 小时到分钟
- 小时到秒
- MINUTE
- 分到秒
- SECOND
例子
以下示例将 3 年添加到当前日期。
SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '03' YEAR; Date (Date+ 3) -------- --------- 16/01/01 19/01/01
以下示例将 3 年零 1 个月添加到当前日期。
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