You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Teradata SQL中如何用EXTRACT提取多时间元素及函数差异咨询

Teradata SQL中EXTRACT函数多元素提取及与YEAR/DAY函数的区别

一、EXTRACT函数无法一次提取多个日期/时间元素

Teradata SQL的EXTRACT函数不支持通过逗号分隔或and、&等运算符一次提取多个日期/时间元素,你尝试的语法不符合Teradata的规则。

要提取多个元素,必须对每个目标元素单独调用EXTRACT,示例写法如下:

SELECT
  EXTRACT(MINUTE FROM TIMESTAMP '2024-06-05 00:12:48') AS minute_val,
  EXTRACT(SECOND FROM TIMESTAMP '2024-06-05 00:12:48') AS second_val,
  EXTRACT(YEAR FROM TIMESTAMP '2024-06-05 00:12:48') AS year_val,
  EXTRACT(DAY FROM TIMESTAMP '2024-06-05 00:12:48') AS day_val;

二、YEAR()/DAY()函数与EXTRACT的区别

1. 返回数据类型不同

  • YEAR()、DAY()这类函数返回INTEGER类型;
  • EXTRACT返回NUMERIC类型(提取秒等带小数精度的元素时会保留小数位,例如提取毫秒级时间戳的秒会得到48.123这类值)。

2. 语法标准与兼容性

  • YEAR()、DAY()是Teradata专有函数,仅适用于Teradata环境;
  • EXTRACT遵循ANSI SQL标准,在PostgreSQL、Oracle等多数符合标准的数据库中通用,兼容性更强。

3. 适用范围差异

  • YEAR()、DAY()仅支持提取基础日期/时间元素,且参数只能是日期或时间戳类型;
  • EXTRACT支持更多元素提取(如TIMEZONE_HOUR、TIMEZONE_MINUTE等时区相关元素),还能处理INTERVAL类型的数据。

示例对比:

-- 使用YEAR()函数,返回INTEGER类型
SELECT YEAR(TIMESTAMP '2024-06-05 00:12:48') AS year_val;

-- 使用EXTRACT,返回NUMERIC类型
SELECT EXTRACT(YEAR FROM TIMESTAMP '2024-06-05 00:12:48') AS year_val;

内容的提问来源于stack exchange,提问作者Linnaes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:59:57