📜  Teradata日期/时间函数

📅  最后修改于: 2021-01-11 11:21:49             🧑  作者: Mango

Teradata日期/时间功能

日期/时间功能可对日期/时间或间隔值进行操作,并因此提供日期/时间值。

支持的日期/时间功能是:

  • 当前的日期
  • 当前时间
  • CURRENT_TIMESTAMP
  • 提取

为避免任何同步问题,请确保这些函数之间的操作使用相同的DATE,TIME或TIMESTAMP定义,因此以下服务始终有效:

  • CURRENT_DATE = CURRENT_DATE
  • CURRENT_TIME = CURRENT_TIME
  • CURRENT_TIMESTAMP = CURRENT_TIMESTAMP
  • CURRENT_DATE和CURRENT_TIMESTAMP始终标识相同的DATE
  • CURRENT_TIME和CURRENT_TIMESTAMP始终标识相同的时间

这些值反映了请求开始的时间,并且在应用程序的持续时间内不会更改。

日期存储

使用以下公式将日期内部存储为整数。

((YEAR - 1900) * 10000) + (MONTH * 100) + DAY

使用以下查询检查日期的存储方式。

SELECT CAST(CURRENT_DATE AS INTEGER);

由于日期存储为整数,因此我们可以对其进行一些算术运算。

Teradata支持大多数标准日期功能。下面列出了一些常用的日期函数,例如:

Date Function Explanation
LAST_DAY It returns the last day of the given month. It may contain the timestamp values as well.
NEXT_DAY It returns the date of the weekday that follows a particular date.
MONTHS_BETWEEN It returns the number of months between two date (timestamp) values. The result is always an integer value.
ADD_MONTHS It adds a month to the given date (timestamp) value and return resulting date value.
OADD_MONTHS It adds a month to the given date (timestamp) value and return resulting date value.
TO_DATE It converts a string value to a DATE value and returns the resulting date value.
TO_TIMESTAMP It converts a string value to a TIMESTAMP value and returns resulting timestamp value.
TRUNC It returns a DATE value with the time portion truncated to the unit specified by a format string.
ROUND It returns a DATE value with the time portion rounded to the unit specified by a format string.
NUMTODSINTERVAL It converts a numeric value to interval days to seconds.
NUMTOYMINTERVAL It converts a numeric value to interval years to the month.
TO_DSINTERVAL It converts a string value to interval days to second.
TO_YMINTERVAL It converts a string value to interval year to a month.
EXTRACT It extracts portions of the day, month, and year from a given date value.
INTERVAL INTERVAL function is used to perform arithmetic operations on DATE and TIME values.

提取

EXTRACT函数用于从DATE值中提取日,月和年的一部分。此函数还用于从TIME / TIMESTAMP值中提取小时,分钟和秒。

例子

1.以下示例说明如何从日期和时间戳值中提取年份值。

SELECT EXTRACT(YEAR FROM CURRENT_DATE);  
EXTRACT(YEAR FROM Date) 

输出量

2020

2.以下示例显示如何从日期和时间戳值中提取月份值。

SELECT EXTRACT(MONTH FROM CURRENT_DATE);  
EXTRACT(MONTH FROM Date) 

输出量

5

3.下面的示例说明如何从日期和时间戳值中提取日值。

SELECT EXTRACT(DAY FROM CURRENT_DATE);  
EXTRACT(DAY FROM Date) 

输出量

22

4.以下示例显示如何从日期和时间戳值中提取小时值。

SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP);  
EXTRACT(HOUR FROM Current TimeStamp(6)) 

输出量

6

5.下面的示例说明如何从日期和时间戳值中提取分钟值。

SELECT EXTRACT(MINUTE FROM CURRENT_TIMESTAMP);  
EXTRACT(MINUTE FROM Current TimeStamp(6)) 

输出量

46

6.下面的示例演示如何从Date和Timestamp值中提取Second值。

SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP);  
EXTRACT(SECOND FROM Current TimeStamp(6)) 

输出量

25.150000

间隔

Teradata提供INTERVAL函数以对DATE和TIME值执行算术运算。有两种类型的INTERVAL函数,例如:

1.年月间隔

  • 年至月

2.白天间隔

  • 上班时间
  • 每分钟
  • 第二天
  • 小时
  • 几分钟
  • 小时到秒
  • 分钟
  • 分钟到秒
  • 第二

例子

1.以下示例将当前日期增加了4年。

SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '04' YEAR; 

输出量

05/22/2024

2.以下示例将4年零03个月添加到当前日期。

SELECT CURRENT_DATE, CURRENT_DATE + INTERVAL '04-03' YEAR TO MONTH; 

输出量

08/22/2024

3.下面的示例向当前时间戳添加03天,05小时和10分钟。

SELECT CURRENT_TIMESTAMP,CURRENT_TIMESTAMP + INTERVAL '03 05:10' DAY TO MINUTE; 

输出量

05-25-2020 10:07:25.150000+00.00