华为云用户手册

  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 create table dwsSource ( attr_name attr_type (',' attr_name attr_type)* (','PRIMARY KEY (attr_name, ...) NOT ENFORCED) (',' watermark for rowtime_column_name as watermark-strategy_expression) ) with ( 'connector' = 'gaussdb', 'url' = '', 'table-name' = '', 'username' = '', 'password' = '' );
  • 前提条件 请务必确保您的账户下已在 数据仓库 服务(DWS)里创建了DWS集群。 如何创建DWS集群,请参考《数据仓库服务管理指南》中“创建集群”章节。 请确保已创建DWS数据库表。 该场景作业需要运行在 DLI 的独享队列上,因此要与DWS集群建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 如何建立增强型跨源连接,请参考《 数据湖探索 用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。 Flink跨源开发场景中直接配置跨源认证信息存在密码泄露的风险,优先推荐您使用DLI提供的跨源认证。 跨源认证简介及操作方法请参考跨源认证简介。
  • 注意事项 创建Flink OpenSource SQL作业时,在作业编辑界面的“运行参数”处,“Flink版本”需要选择“1.15”,勾选“保存作业日志”并设置保存作业日志的OBS桶,方便后续查看作业日志。 认证用的username和password等硬编码到代码中或者明文存储都有很大的安全风险,建议使用DEW管理凭证。配置文件或者环境变量中密文存放,使用时解密,确保安全。Flink Opensource SQL使用DEW管理访问凭据 with参数中字段只能使用单引号,不能使用双引号。
  • 常见问题 Q:作业运行失败,运行日志中有如下报错信息,应该怎么解决? java.io.IOException: unable to open JDBC writer ... Caused by: org.postgresql.util.PSQLException: The connection attempt failed. ... Caused by: java.net.SocketTimeoutException: connect timed out A:应考虑是跨源没有绑定,或者跨源没有绑定成功。 参考增强型跨源连接章节,重新配置跨源。参考DLI跨源连接DWS失败进行问题排查。
  • 功能描述 DLI将Flink作业从数据仓库服务(DWS)中读取数据。DWS数据库内核兼容PostgreSQL,PostgreSQL数据库可存储更加复杂类型的数据,支持空间信息服务、多版本并发控制(MVCC)、高并发,适用场景包括位置应用、金融保险、互联网电商等。 数据仓库服务(Data Warehouse Service,简称DWS)是一种基于基础架构和平台的在线数据处理数据库,为用户提供海量数据挖掘和分析服务。DWS的更多信息,请参见《数据仓库服务管理指南》。 推荐使用DWS服务自研的DWS Connector。 DWS-Connector的使用方法请参考dws-connector-flink。
  • 语法说明 string_split(target, separator) 表1 string_split参数说明 参数 数据类型 说明 target STRING 待处理的目标字符串。 说明: 如果target为NULL,则返回一个空行。 如果target包含两个或多个连续出现的分隔符时,则返回长度为零的空子字符串。 如果target未包含指定分隔符,则返回目标字符串。 separator VARCHAR 指定的分隔符,当前仅支持单字符分隔。
  • 聚合函数 聚合函数将所有的行作为输入,并返回单个聚合值作为结果。 表1 聚合函数 函数 描述 COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) 默认情况下或使用关键字 ALL,返回不为 NULL 的表达式的输入行数。使用 DISTINCT 则对所有值去重后计算。 COUNT(*) | COUNT(1) 返回输入行数。 AVG([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的平均值(算术平均值)。使用 DISTINCT 则对所有值去重后计算。 SUM([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行的表达式总和。使用 DISTINCT 则对所有值去重后计算。 MAX([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的最大值。使用 DISTINCT 则对所有值去重后计算。 MIN([ ALL | DISTINCT ] expression ) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的最小值。使用 DISTINCT 则对所有值去重后计算。 STDDEV_POP([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的总体标准偏差。使用 DISTINCT 则对所有值去重后计算。 STDDEV_SAMP([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的样本标准偏差。使用 DISTINCT 则对所有值去重后计算。 VAR_POP([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的总体方差(总体标准差的平方)。使用 DISTINCT 则对所有值去重后计算。 VAR_SAMP([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回所有输入行中表达式的样本方差(样本标准差的平方)。使用 DISTINCT 则对所有值去重后计算。 COLLECT([ ALL | DISTINCT ] expression) 默认情况下或使用关键字 ALL,返回跨所有输入行的多组表达式。NULL 值将被忽略。使用 DISTINCT 则对所有值去重后计算 VARIANCE([ ALL | DISTINCT ] expression) VAR_SAMP() 的同义方法。 RANK() 返回值在一组值中的排名。结果是 1 加上分区顺序中当前行之前或等于当前行的行数。排名在序列中不一定连续。 DENSE_RANK() 返回值在一组值中的排名。结果是一加先前分配的等级值。与函数 rank 不同,dense_rank 不会在排名序列中产生间隙。 ROW_NUMBER() 在窗口分区内根据 rows 的排序为每一行分配一个唯一的序列号,从一开始。ROW_NUMBER 和 RANK 相似。ROW_NUMBER 按 顺序对所有行进行编号(例如 1,2,3,4,5)。RANK 为等值 row 提供相同的序列值(例如 1,2,2,4,5)。 LEAD(expression [, offset] [, default]) 返回窗口中当前行之后第 offset 行处的表达式值。offset 的默认值为 1,default 的默认值为 NULL。 LAG(expression [, offset] [, default]) 返回窗口中当前行之前第 offset 行处的表达式值。offset 的默认值为 1,default 的默认值为 NULL。 FIRST_VALUE(expression) 返回一组有序值中的第一个值。 LAST_VALUE(expression) 返回一组有序值中的最后一个值。 LISTAGG(expression [, separator]) 连接字符串表达式的值并在它们之间放置分隔符值。字符串末尾不添加分隔符时则分隔符的默认值为“,”。 父主题: 内置函数
  • Hash函数 表1 Hash函数 Hash函数 函数说明 MD5(string) 以 32 个十六进制数字的字符串形式返回 string 的 MD5 哈希值;如果字符串为 NULL,则返回 NULL。 SHA1(string) 以 40 个十六进制数字的字符串形式返回 string 的 SHA-1 哈希值;如果字符串为 NULL,则返回 NULL。 SHA224(string) 以 56 个十六进制数字的字符串形式返回 string 的 SHA-224 哈希值;如果字符串为 NULL,则返回 NULL。 SHA256(string) 以 64 个十六进制数字的字符串形式返回 string 的 SHA-256 哈希值;如果字符串为 NULL,则返回 NULL。 SHA384(string) 以 96 个十六进制数字的字符串形式返回 string 的 SHA-384 哈希值;如果字符串为 NULL,则返回 NULL。 SHA512(string) 以 128 个十六进制数字的字符串形式返回 string 的 SHA-512 哈希值;如果字符串为 NULL,则返回 NULL。 SHA2(string, hashLength) 使用 SHA-2 系列散列函数(SHA-224,SHA-256,SHA-384 或 SHA-512)返回散列值。第一个参数字符串是要散列的字符串, 第二个参数 hashLength 是结果的位长(224,256,384 或 512)。如果 string 或 hashLength 为 NULL,则返回 NULL。 父主题: 内置函数
  • 值获取函数 表1 值获取函数 SQL函数 描述 tableName.compositeType.field 按名称从 Flink 复合类型(例如,Tuple,POJO)返回字段的值。 tableName.compositeType.* 返回 Flink 复合类型(例如,Tuple,POJO)的平面表示,将其每个直接子类型转换为单独的字段。在大多数情况下,平面表示 的字段与原始字段的命名类似,但使用 $ 分隔符(例如 mypojo$mytuple$f0)。 父主题: 内置函数
  • 函数说明 表1 值构建函数说明 值构建函数 函数说明 -- implicit constructor with parenthesis (value1 [, value2]*) 返回从值列表 (value1, value2, …) 创建的行。隐式行构造函数支持任意表达式作为字段,但至少需要两个字段。 显式行构造函数可以处理任意数量的字段,但目前还不能很好地支持所有类型的字段表达式。 ARRAY ‘[’ value1 [, value2 ]* ‘]’ 返回从值列表 (value1, value2, …) 创建的数组。 MAP ‘[’ value1, value2 [, value3, value4 ]* ‘]’ 返回从键值对列表 ((value1, value2), (value3, value4), …) 创建的 map。
  • 函数说明 表1 集合函数说明 集合函数 函数说明 CARDINALITY(array) 返回数组中元素的数量。 array '[' INT ']' 返回数组中 INT 位置的元素。索引从 1 开始。 ELEMENT(array) 返回数组的唯一元素(其基数应为 1);如果数组为空,则返回 NULL。如果数组有多个元素,则抛出异常。 CARDINALITY(map) 返回 map 中的 entries 数量。 map ‘[’ value ‘]’ 返回 map 中指定 key 对应的值。
  • CAST示例一:将amount值转换成整型 将amount值转换成整型。 insert into temp select cast(amount as INT) from source_stream; 表2 CAST类型转换函数示例 示例 说明 示例 cast(v1 as string) 将v1转换为字符串类型,v1可以是数值类型,TIMESTAMP/DATE/TIME。 表T1: | content (INT) | | ------------- | | 5 | 语句: SELECT cast(content as varchar) FROM T1; 结果: "5" cast (v1 as int) 将v1转换为int, v1可以是数值类型或字符类。 表T1: | content (STRING) | | ------------- | | "5" | 语句: SELECT cast(content as int) FROM T1; 结果: 5 cast(v1 as timestamp) 将v1转换为timestamp类型,v1可以是字符串或DATE/TIME。 表T1: | content (STRING) | | ------------- | | "2018-01-01 00:00:01" | 语句: SELECT cast(content as timestamp) FROM T1; 结果: 1514736001000 cast(v1 as date) 将v1转换为date类型, v1可以是字符串或者TIMESTAMP。 表T1: | content (TIMESTAMP) | | ------------- | | 1514736001000 | 语句: SELECT cast(content as date) FROM T1; 结果: "2018-01-01" Flink作业不支持使用CAST将“BIGINT”转换为“TIMESTAMP”,可以使用to_timestamp进行转换。
  • TO_DATE 功能描述 参数语法说明,本函数将string2格式的日期字符串string1转换为DATE类型。 语法说明 DATE TO_DATE(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合格式的字符串会执行报错。 string2 STRING 字符串格式。如果不指定该参数,则默认为'yyyy-MM-dd' 。 示例 测试语句 SELECT TO_DATE('1997-04-25') AS `result`, TO_DATE('1997:04:25', 'yyyy-MM-dd') AS `result2`, TO_DATE('1997-04-25 00:00:00', 'yyyy-MM-dd HH:mm:ss') AS `result3` FROM testtable; 测试结果 result result2 result3 1997-04-25 1997-04-25 1997-04-25
  • UNIX_TIMESTAMP(string1[, string2]) 功能描述 参数语法说明,本函数将以string2格式的时间字符串string1转为Unix 时间戳(以秒为单位)。以BIGINT类型返回。 语法说明 BIGINT UNIX_TIMESTAMP(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合string2参数格式的字符串语法会报错。 string2 STRING 时间字符串格式。如果不指定该参数,则默认为'yyyy-MM-dd HH:mm:ss' 。 示例 测试语句 SELECT UNIX_TIMESTAMP('1997-04-25', 'yyyy-MM-dd') AS `result`, UNIX_TIMESTAMP('1997-04-25 00:00:10', 'yyyy-MM-dd HH:mm:ss') AS `result2`, UNIX_TIMESTAMP('1997-04-25 00:00:00') AS `result3` FROM testtable; 测试结果 result result2 result3 861897600 861897610 861897600
  • TO_TIMESTAMP 功能描述 将string2格式的日期时间字符串string1转换为TIMESTAMP类型返回。 语法说明 TIMESTAMP TO_TIMESTAMP(string1[, string2]) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串。不符合格式的字符串会返回NULL。 string2 STRING 日期字符串格式。如果该参数不指定,则默认为'yyyy-MM-dd HH:mm:ss' 。 示例 测试语句 SELECT TO_TIMESTAMP('1997-04-25', 'yyyy-MM-dd') AS `result`, TO_TIMESTAMP('1997-04-25 00:00:00') AS `result2`, TO_TIMESTAMP('1997-04-25 00:00:00', 'yyyy-MM-dd HH:mm:ss') AS `result3` FROM testtable; 测试结果 result result2 result3 1997-04-25 00:00 1997-04-25 00:00 1997-04-25 00:00
  • CONVERT_TZ 功能描述 参考语法说明,本函数将日期时间string1(具有默认ISO时间戳格式'yyyy-MM-dd HH:mm:ss' )从时区string2转换为时区string3的值,结果以STRING类型返回。 语法说明 STRING CONVERT_TZ(string1, string2, string3) 入参说明 参数名 数据类型 参数说明 string1 STRING SQL时间戳形式的字符串,不符合格式的字符串会返回NULL。 string2 STRING 转换前时区。时区的格式应该是缩写如“PST”,全名如“Country A/City A”,或自定义ID如“GMT-08:00”。 string3 STRING 转换后时区。时区的格式应该是缩写如“PST”,全名如“Country A/City A”,或自定义ID如“GMT-08:00”。 示例 测试语句 SELECT CONVERT_TZ(1970-01-01 00:00:00, UTC, Country A/City A) AS `result`, CONVERT_TZ(1997-04-25 10:00:00, UTC, GMT-08:00) AS `result2` FROM testtable; 测试结果 result result2 1969-12-31 16:00:00 1997-04-25 02:00:00
  • TIMESTAMPADD 功能描述 参考语法说明,本函数功能为将整型interval与timeintervalunit组成的结果添加到timepoint中,并返回添加后的日期时间。 TIMESTAMPADD函数返回结果与timepoint相同。例外场景为:如果timepoint输入类型为TIMESTAMP,也可以将TIMESTAMPADD函数返回结果插入到DATE类型的表字段中。 语法说明 TIMESTAMP(3)/DATE/TIME TIMESTAMPADD(timeintervalunit, interval, timepoint) 入参说明 参数名 数据类型 参数说明 timeintervalunit TIMEUNIT 时间单位。 interval INT 整型的时间间隔。 timepoint TIMESTAMP/DATE/TIME 时间点 示例 测试语句 SELECT TIMESTAMPADD(WEEK, 1, DATE '1997-04-25') AS `result`, TIMESTAMPADD(QUARTER, 1, TIMESTAMP '1997-04-25 10:11:12') AS `result2`, TIMESTAMPADD(SECOND, 2, TIME '10:11:12') AS `result3` FROM testtable; 测试结果 result result2 result3 1997-05-02 如果该字段插入到TIMESTAMP类型的表字段中,则返回:1997-07-25T10:11:12 如果该字段插入到TIMESTAMP类型的表字段中,则返回:1997-07-25 10:11:14
  • DATE_FORMAT 功能描述 将时间戳或时间戳格式的字符串转换为指定格式的日期字符串。 语法说明 STRING DATE_FORMAT(timestamp, dateformat) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP/STRING 时间点。 dateformat STRING 日期格式字符串。 示例 测试语句 SELECT DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yyyy-MM-dd HH:mm:ss') AS `result`, DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yyyy-MM-dd') AS `result2`, DATE_FORMAT(TIMESTAMP '1997-04-25 10:11:12', 'yy/MM/dd HH:mm') AS `result3`, DATE_FORMAT('1997-04-25 10:11:12', 'yyyy-MM-dd') AS `result4` FROM testtable; 测试结果 result result2 result3 result4 1997-04-25 10:11:12 1997-04-25 97/04/25 10:11 1997-04-25
  • TIMESTAMPDIFF 功能描述 参考语法说明,本函数功能为返回timepoint1和timepoint2之间的时间间隔,间隔的单位由第一个参数timepointunit指定。 语法说明 INT TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) 入参说明 参数名 数据类型 参数说明 timepointunit TIMEUNIT 时间单位。取值范围为: SECOND、MINUTE、HOUR、DAY、MONTH、YEAR。 timepoint1/timepoint2 TIMESTAMP/DATE 时间点。 示例 测试语句 SELECT TIMESTAMPDIFF(DAY, TIMESTAMP '1997-04-25 10:00:00', TIMESTAMP '1997-04-28 10:00:00') AS `result`, TIMESTAMPDIFF(DAY, DATE '1997-04-25', DATE '1997-04-28') AS `result2`, TIMESTAMPDIFF(DAY, TIMESTAMP '1997-04-27 10:00:20', TIMESTAMP '1997-04-25 10:00:00') AS `result3` FROM testtable; 测试结果 result result2 result3 3 3 -2
  • FROM_UNIXTIME 功能描述 参考语法说明,本函数根据时间戳numeric和当前时区返回string格式的时间。 语法说明 STRING FROM_UNIXTIME(numeric[, string]) 入参说明 参数名 数据类型 参数说明 numeric BIGINT 内部时间戳值,表示自'1970-01-01 00:00:00' UTC 以来的秒数,值可以由UNIX_TIMESTAMP() 函数生成。 string STRING 时间字符串格式。如果该参数不指定,则默认为'yyyy-MM-dd HH:mm:ss'。 示例 测试语句 SELECT FROM_UNIXTIME(44) AS `result`, FROM_UNIXTIME(44, 'yyyy:MM:dd') AS `result2` FROM testtable; 测试结果 result result2 1970-01-01 08:00:44 1970:01:01
  • SECOND 功能描述 返回当前时间戳中的秒数(0 到 59 之间的整数),返回类型为BIGINT。 语法说明 BIGINT SECOND(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT SECOND(TIMESTAMP '1997-04-25 10:11:12') AS `result` FROM testtable; 测试结果 result 12
  • MINUTE 功能描述 返回当前时间戳中的分钟数(0 到 59 之间的整数),返回类型为BIGINT。 语法说明 BIGINT MINUTE(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT MINUTE(TIMESTAMP '1997-04-25 10:11:12') AS `result` FROM testtable; 测试结果 result 11
  • CEIL 功能描述 返回将时间点向上取值到指定时间单位的值。 语法说明 TIME/TIMESTAMP(3) CEIL(timepoint TO timeintervalunit) 入参说明 参数名 数据类型 参数说明 timepoint TIMESTAMP/TIME SQL时间或SQL时间戳。 timeintervalunit TIMEUNIT 时间单位,类型可以是YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 示例 测试语句。 SELECT CEIL(TIME '13:14:15' TO MINUTE) AS `result` CEIL(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result2`, CEIL(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result3` FROM testtable; 测试结果 result result2 result3 13:15 13:15 1997-04-25T13:15
  • FLOOR 功能描述 返回将时间点向下取值到指定时间单位的值。 语法说明 TIME/TIMESTAMP(3) FLOOR(timepoint TO timeintervalunit) 入参说明 参数名 数据类型 参数说明 timepoint TIMESTAMP/TIME SQL时间或SQL时间戳。 timeintervalunit TIMEUNIT 时间单位,类型可以是YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 示例 测试语句。 SELECT FLOOR(TIME '13:14:15' TO MINUTE) AS `result` FLOOR(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result2`, FLOOR(TIMESTAMP '1997-04-25 13:14:15' TO MINUTE) AS `result3` FROM testtable; 测试结果 message message2 message3 13:14 13:14 1997-04-25T13:14
  • OVERLAPS 功能描述 如果两个时间范围有重叠,则返回TRUE,反之,则返回FALSE。 语法说明 BOOLEAN (timepoint1, temporal1) OVERLAPS (timepoint2, temporal2) 入参说明 参数名 数据类型 参数说明 timepoint1/timepoint2 DATE/TIME/TIMESTAMP 时间点。 temporal1/temporal2 DATE/TIME/TIMESTAMP/INTERVAL 时间点或时间间隔。 (timepoint, temporal)在判断是否重叠时为闭区间。 temporal可以是DATE/TIME/TIMESTAMP也可以是INTERVAL。 当temporal是DATE/TIME/TIMESTAMP时,(timepoint, temporal)表示timepoint, temporal之间的时间间隔。允许temporal在timepoint之前,如(DATE '1997-04-25', DATE '1997-04-23')也合法。 当temporal是INTERVAL时,(timepoint, temporal)表示timepoint, timepoint+temporal之间的时间间隔。 必须保证(timepoint1, temporal1)和(timepoint2, temporal2)是同一数据类型的时间间隔。 示例 测试语句 SELECT (TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) AS `result`, (TIME '2:30:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) AS `result2`, (TIME '2:30:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:31:00', INTERVAL '2' HOUR) AS `result3`, (TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:00:00', INTERVAL '3' HOUR) AS `result4`, (TIMESTAMP '1997-04-25 12:00:00', TIMESTAMP '1997-04-25 12:20:00') OVERLAPS (TIMESTAMP '1997-04-25 13:00:00', INTERVAL '2' HOUR) AS `result5`, (DATE '1997-04-23', INTERVAL '2' DAY) OVERLAPS (DATE '1997-04-25', INTERVAL '2' DAY) AS `result6`, (DATE '1997-04-25', DATE '1997-04-23') OVERLAPS (DATE '1997-04-25', INTERVAL '2' DAY) AS `result7` FROM testtable; 测试结果 result result2 result3 result4 result5 result6 result7 true true false true false true true
  • DAYOFWEEK 功能描述 计算当前日期是当前周的第几天(1 到 7之间的整数),以BIGINT类型返回。 需要注意这里自然周的起点是星期天,即每周的第1天是星期天,第2天是星期一,依次类推。 语法说明 BIGINT DAYOFWEEK(date) 入参说明 参数名 数据类型 参数说明 date DATE SQL日期。 示例 测试语句 SELECT DAYOFWEEK(DATE '1997-04-25') AS `result` FROM testtable; 测试结果 result 6
  • HOUR 功能描述 从当前时间戳获取以24小时制的小时数进行返回,范围0-23(0 到 23 之间的整数),返回类型为BIGINT。 语法说明 BIGINT HOUR(timestamp) 入参说明 参数名 数据类型 参数说明 timestamp TIMESTAMP SQL时间戳。 示例 测试语句 SELECT HOUR(TIMESTAMP '1997-04-25 10:11:12') AS `result` FROM testtable; 测试结果 result 10
  • EXTRACT 功能描述 提取时间点或时间间隔中指定某一时间单位的部分,以BIGINT类型返回。 语法说明 BIGINT EXTRACT(timeinteravlunit FROM temporal) 入参说明 参数名 数据类型 参数说明 timeinteravlunit TIMEUNIT 需要从时间点或时间间隔中提取的时间单位,取值可以是:YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 temporal DATE/TIME/TIMESTAMP/INTERVAL 时间点或时间间隔。 不允许指定不存在于时间点或时间间隔中的时间单位,否则作业会提交失败。 例如如下错误语句,会报错YEAR不能从TIME中提取。 SELECT EXTRACT(YEAR FROM TIME '12:44:31' ) AS `result` FROM testtable; 示例 测试语句 SELECT EXTRACT(YEAR FROM DATE '1997-04-25' ) AS `result`, EXTRACT(MINUTE FROM TIME '12:44:31') AS `result2`, EXTRACT(SECOND FROM TIMESTAMP '1997-04-25 13:14:15') AS `result3`, EXTRACT(YEAR FROM INTERVAL '2-10' YEAR TO MONTH) AS `result4`, FROM testtable; 测试结果 result result2 result3 result4 1997 44 15 2
  • DAYOFYEAR 功能描述 计算当前日期是一年中的第几天(返回1到366 之间的整数),以BIGINT类型返回。 语法说明 BIGINT DAYOFYEAR(date) 入参说明 参数名 数据类型 参数说明 date DATE SQL日期。 示例 测试语句 SELECT DAYOFYEAR(DATE '1997-04-25' ) AS `result` FROM testtable; 测试结果 result 115
  • QUARTER 功能描述 从SQL日期返回表示该日期季度的数字(1到4之间的整数),返回类型为BIGINT。 语法说明 BIGINT QUARTER(date) 入参说明 参数名 数据类型 参数说明 date DATE SQL日期。 示例 测试语句 SELECT QUARTER(DATE '1997-04-25' ) AS `result` FROM testtable; 测试结果 result 2
共100000条