华为云用户手册

  • timeofday() 描述:当前日期及时间(像clock_timestamp,但是返回时为text。) 返回值类型:text 示例: 1 2 3 4 5 SELECT timeofday(); timeofday ------------------------------------- Fri Sep 01 17:05:01.167506 2017 CST (1 row)
  • transaction_timestamp() 描述:当前日期及时间,与current_timestamp等效。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT transaction_timestamp(); transaction_timestamp ------------------------------- 2017-09-01 17:05:13.534454+08 (1 row)
  • next_day(x,y) 描述:用于计算x时间开始的下一个星期y的时间。 ORA和TD兼容模式下,返回值类型为timestamp。 MySQL兼容模式下,返回值类型为date。 示例: 1 2 3 4 5 SELECT next_day(TIMESTAMP '2017-05-25 00:00:00','Sunday')AS cal_result; cal_result --------------------- 2017-05-28 00:00:00 (1 row)
  • from_unixtime(unix_timestamp[,format]) 描述:格式串缺省时,将unix时间戳转换为日期时间类型输出。格式串指定时,将unix时间戳转换为指定格式的字符串输出。 返回值类型:timestamp(格式串缺省)/ text(格式串指定) 示例: 1 2 3 4 5 6 7 8 9 10 SELECT from_unixtime(875996580); from_unixtime --------------------- 1997-10-04 20:23:00 (1 row) SELECT from_unixtime(875996580, '%Y %D %M %h:%i:%s'); from_unixtime --------------------------- 1997 4th October 08:23:00 (1 row)
  • unix_timestamp([timestamp with time zone]) 描述:获取从'1970-01-01 00:00:00'UTC到入参时间经历的秒数。无入参时,指定为当前时间。 返回值类型:bigint(无入参)/numeric(有入参) 示例: 1 2 3 4 5 SELECT unix_timestamp(); unix_timestamp ---------------- 1693906219 (1 row) 1 2 3 4 5 SELECT unix_timestamp('2018-09-08 12:11:13+06'); unix_timestamp ---------------- 1536387073.000000 (1 row)
  • last_day(d) 描述:用于计算时间点d本月最后一天的时间。 ORA和TD兼容模式下,返回值类型为timestamp。 MySQL兼容模式下,返回值类型为date。 示例: 1 2 3 4 5 SELECT last_day(to_date('2017-01-01', 'YYYY-MM-DD')) AS cal_result; cal_result --------------------- 2017-01-31 00:00:00 (1 row)
  • now([fsp]) 描述:当前事务开始的日期及时间,参数确定微秒输出精度,缺省时为6。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT now(); now ------------------------------- 2017-09-01 17:03:42.549426+08 (1 row) 1 2 3 4 5 SELECT now(3); now ---------------------------- 2021-09-08 10:59:00.427+08 (1 row)
  • statement_timestamp() 描述:当前日期及时间。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT statement_timestamp(); statement_timestamp ------------------------------- 2017-09-01 17:04:39.119267+08 (1 row)
  • extract(field from interval) 描述:获取field指定精度的值。如果大于12,则取与12的模。field的有效值参见EXTRACT。 返回值类型:double precision 示例: 1 2 3 4 5 SELECT extract(month FROM interval '2 years 3 months'); date_part ----------- 3 (1 row)
  • isfinite(date) 描述:测试是否为有限日期。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 9 10 SELECT isfinite(date '2001-02-16'); isfinite ---------- t (1 row) SELECT isfinite(date 'infinity'); isfinite ---------- f (1 row)
  • date_trunc(text, timestamp) 描述:截取到参数text指定的精度。 返回值类型:timestamp 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40'); date_trunc --------------------- 2001-02-16 20:00:00 (1 row) --获取去年的最后一天 SELECT date_trunc('day', date_trunc('year',CURRENT_DATE)+ '-1'); date_trunc ------------------------ 2022-12-31 00:00:00+00 (1 row) --获取今年的第一天 SELECT date_trunc('year',CURRENT_DATE); date_trunc ------------------------ 2023-01-01 00:00:00+00 (1 row) --获取去年的第一天 SELECT date_trunc('year',now() + '-1 year'); date_trunc ------------------------ 2022-01-01 00:00:00+00 (1 row)
  • trunc(timestamp) 描述:默认按天截取。 返回值类型:timestamp 示例: 1 2 3 4 SELECT trunc(TIMESTAMP '2001-02-16 20:38:40'); trunc --------------------- 2001-02-16 00:00:00 (1 row)
  • isfinite(timestamp) 描述:测试判断是否为有限时间。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 9 10 SELECT isfinite(timestamp '2001-02-16 21:28:30'); isfinite ---------- t (1 row) SELECT isfinite(timestamp 'infinity'); isfinite ---------- f (1 row)
  • extract(field from timestamp) 描述:获取field指定精度的值。field的有效值参见EXTRACT。 返回值类型:double precision 示例: 1 2 3 4 5 SELECT extract(hour FROM TIMESTAMP '2001-02-16 20:38:40'); date_part ----------- 20 (1 row)
  • justify_interval(interval) 描述:结合justify_days和justify_hours,调整interval。 返回值类型:interval 示例: 1 2 3 4 5 SELECT justify_interval(interval '1 MON -1 HOUR'); justify_interval ------------------ 29 days 23:00:00 (1 row)
  • maketime(hour, minute, second) 描述:根据所给的小时,分钟和秒数返回time类型的值。由于GaussDB(DWS)中的time类型的取值范围为00:00:00到24:00:00, 故不支持hour大于24时和hour小于0时的场景。 返回值类型:time 示例: 1 2 3 4 5 SELECT maketime(12, 15, 30.12); maketime ------------- 12:15:30.12 (1 row)
  • numtodsinterval(num, interval_unit) 描述:将数字转换为interval类型。num为numeric类型数字,interval_unit为固定格式字符串('DAY' | 'HOUR' | 'MINUTE' | 'SECOND')。 可以通过设置参数IntervalStyle为oracle,兼容该函数在Oracle中的interval输出格式。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT numtodsinterval(100, 'HOUR'); numtodsinterval ----------------- 100:00:00 (1 row) SET intervalstyle = oracle; SET SELECT numtodsinterval(100, 'HOUR'); numtodsinterval ------------------------------- +000000004 04:00:00.000000000 (1 row)
  • adddate(date, interval | int) 描述:返回给定日期时间加上指定单位的时间间隔的结果。默认单位(即第二个参数为整型时)为天数。 返回值类型:timestamp 示例: 当入参为text类型时: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 SELECT adddate('2020-11-13', 10); adddate ------------ 2020-11-23 (1 row) SELECT adddate('2020-11-13', interval '1' month); adddate ------------ 2020-12-13 (1 row) SELECT adddate('2020-11-13 12:15:16', interval '1' month); adddate --------------------- 2020-12-13 12:15:16 (1 row) SELECT adddate('2020-11-13', interval '1' minute); adddate --------------------- 2020-11-13 00:01:00 (1 row) 当入参为date类型时: 1 2 3 4 5 6 7 8 9 10 11 SELECT adddate(current_date, 10); adddate ------------ 2021-09-24 (1 row) SELECT adddate(date '2020-11-13', interval '1' month); adddate --------------------- 2020-12-13 00:00:00 (1 row)
  • timestampdiff(field, timestamp1, timestamp2) 描述:将两个日期参数相减(timestamp2 - timestamp1),并以单位field作为返回值。若相减值为负,则函数返回值为负。field支持的参数为year、month、quarter、day、week、hour、minute、second和microsecond。 返回值类型:bigint 示例: 1 2 3 4 5 SELECT timestampdiff(day, TIMESTAMP '2001-02-01', TIMESTAMP '2003-05-01 12:05:55'); timestampdiff --------------- 819 (1 row)
  • date_part(text, interval) 描述:获取参数text指定的精度。如果大于12,则取与12的模。 等效于extract(field from timestamp)。 返回值类型:double precision 示例: 1 2 3 4 5 SELECT date_part('month', interval '2 years 3 months'); date_part ----------- 3 (1 row)
  • timestampadd(field, numeric, timestamp) 描述:将以单位field的整数时间间隔(秒数可以带小数)添加到日期时间表达式中。若数值为负,则表示从给定的时间日期时间表达式中减去对应的时间间隔。field支持的参数为year,month,quarter,day,week,hour,minute,second和microsecond。 返回值类型:timestamp 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT timestampadd(year, 1, TIMESTAMP '2020-2-29'); timestampadd --------------------- 2021-02-28 00:00:00 (1 row) SELECT timestampadd(second, 2.354156, TIMESTAMP '2020-11-13'); timestampadd ---------------------------- 2020-11-13 00:00:02.354156 (1 row)
  • clock_timestamp() 描述:实时时钟的当前时间戳。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT clock_timestamp(); clock_timestamp ------------------------------- 2017-09-01 16:57:36.636205+08 (1 row)
  • current_timestamp 描述:当前日期及时间。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 SELECT current_timestamp; pg_systimestamp ------------------------------ 2017-09-01 16:58:19.22173+08 (1 row)
  • subdate(date, interval | int) 描述:返回给定日期时间减去指定单位的时间间隔的结果; 默认单位(即第二个参数为整型时)为天数。 返回值类型:timestamp 示例: 当入参为text类型时: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SELECT subdate('2020-11-13', 10); subdate ------------ 2020-11-03 (1 row) SELECT subdate('2020-11-13', interval '2' month); subdate ------------ 2020-09-13 (1 row) SELECT subdate('2020-11-13 12:15:16', interval '1' month); subdate --------------------- 2020-10-13 12:15:16 (1 row) SELECT subdate('2020-11-13', interval '2' minute); subdate --------------------- 2020-11-12 23:58:00 (1 row) 当入参为date类型时: 1 2 3 4 5 6 7 8 9 10 11 SELECT subdate(current_date, 10); subdate ------------ 2021-09-05 (1 row) SELECT subdate(current_date, interval '1' month); subdate --------------------- 2021-08-15 00:00:00 (1 row)
  • date_part(text, timestamp) 描述:获取参数text指定的精度。 等效于extract(field from timestamp)。 返回值类型:double precision 示例: 1 2 3 4 5 SELECT date_part('hour', TIMESTAMP '2001-02-16 20:38:40'); date_part ----------- 20 (1 row)
  • age(timestamp, timestamp) 描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负。 返回值类型:interval 示例: 1 2 3 4 5 SELECT age(TIMESTAMP '2001-04-10', TIMESTAMP '1957-06-13'); age ------------------------- 43 years 9 mons 27 days (1 row)
  • date_format(timestamp, fmt) date_format函数将日期参数按照fmt指定的格式转换为字符串。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SELECT date_format('2009-10-04 22:23:00', '%M %D %W'); date_format -------------------- October 4th Sunday (1 row) SELECT date_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S'); date_format --------------------- 2021-02-20 08:30:45 (1 row) SELECT date_format('2021-02-20 18:10:15', '%r-%T'); date_format ---------------------- 06:10:15 PM-18:10:15 (1 row) 表 date_format支持的输出格式显示了可以用于将日期参数格式化输出的格式类型,这些格式类型适用于函数date_format、time_format、str_to_date、str_to_time和from_unixtime。 表1 date_format支持的输出格式 格式 说明 取值 %a 缩写星期名 Sun...Sat %b 缩写月份名 Jan...Dec %c 月份 0...12 %D 带英文后缀的月份日期 0th, 1st, 2nd, 3rd, … %d 一个月里的日,2位 00...31 %e 一个月里的日 0...31 %f 微秒 000000...999999 %H 小时,24小时制 00...23 %h 小时,12小时制 01...12 %I 小时,12小时制,同%h 01...12 %i 分钟 00...59 %j 一年里的日 001...366 %k 小时,24小时制,同%H 0...23 %l 小时,12小时制,同%h 1...12 %M 月份名 January...December %m 月份,两位 00...12 %p 上下午 AM PM %r 时间,12小时制 hh::mm::ss AM/PM %S 秒 00...59 %s 秒,同%S 00...59 %T 时间,24小时制 hh::mm::ss %U 周 (00-53) 星期日是一周的第一天 00...53 %u 周 (00-53) 星期一是一周的第一天 00...53 %V 周 (01-53) 星期日是一周的第一天,与%X搭配使用 01...53 %v 周 (01-53) 星期一是一周的第一天,与%x搭配使用 01...53 %W 星期名 Sunday...Saturday %w 一周的日,周日为0 0...6 %X 年份,其中的星期日是周的第一天,4 位,与%V搭配使用 - %x 年份,其中的星期一是周的第一天,4 位,与%v搭配使用 - %Y 年份,4位 - %y 年份,2位 - %% 字符'%' 字符'%' %x 'x',上述未列出的任意字符 字符'x' date_format支持的输出格式中,%U、%u、%V、%v、%X、%x暂不支持。
  • 参数说明 INDEX 重新建立指定的索引。 TABLE 重新建立指定表的所有索引,如果表有从属的"TOAST"表,则这个表也会重建索引。 DATABASE 重建当前数据库里的所有索引。 SYSTEM 在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。 name 需要重建索引的索引、表、数据库的名称。表和索引可以有模式修饰。 REINDEX DATABASE和SYSTEM只能重建当前数据库的索引,所以name必须和当前数据库名称相同。 FORCE 无效选项,会被忽略。 partition_name 需要重建索引的分区的名字或者索引分区的名字。 取值范围: 如果前面是REINDEX INDEX,则这里应该指定索引分区的名字; 如果前面是REINDEX TABLE,则这里应该指定分区的名字; REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。
  • 注意事项 只有系统管理员才能执行EXECUTE DIRECT。 为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。 使用此类型语句在指定的DN执行AVG聚集计算时,返回结果集是以数组形式返回,如{4,2},表示sum结果为4,count结果为2。 由于CN节点不存储用户表数据,没有必要指定CN节点执行用户表上的SELECT查询。如果查询语句中含有隐藏的远程调用开启事务逻辑,则会报错“Cannot send begin to other nodes as I'm not execute cn”。 不允许执行嵌套的EXECUTE DIRECT语句,即执行的SQL语句不能同样是EXECUTE DIRECT语句,此时可直接执行最内层EXECUTE DIRECT语句代替。
  • 基本文本匹配 GaussDB(DWS)的全文检索基于匹配算子@@,当一个tsvector(document)匹配到一个tsquery(query)时,则返回true。其中,tsvector(document)和tsquery(query)两种数据类型可以任意排序。 1 2 3 4 5 SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector @@ 'cat & rat'::tsquery AS RESULT; result ---------- t (1 row) 1 2 3 4 5 SELECT 'fat & cow'::tsquery @@ 'a fat cat sat on a mat and ate a fat rat'::tsvector AS RESULT; result ---------- f (1 row) 正如上面例子表明,tsquery不仅是文本,且比tsvector包含的要多。tsquery包含已经标注化为词条的搜索词,同时可能是使用AND、OR、或NOT操作符连接的多个术语。详细请参见文本搜索类型。函数to_tsquery和plainto_tsquery对于将用户书写文本转换成适合的tsquery是非常有用的,比如将文本中的词标准化。类似地,to_tsvector用于解析和标准化文档字符串。因此,实际中文本搜索匹配看起来更像这样: 1 2 3 4 5 SELECT to_tsvector('fat cats ate fat rats') @@ to_tsquery('fat & rat') AS RESULT; result ---------- t (1 row) 需要注意的是,下面这种方式是不可行的: 1 2 3 4 5 SELECT 'fat cats ate fat rats'::tsvector @@ to_tsquery('fat & rat')AS RESULT; result ---------- f (1 row) 由于tsvector没有对rats进行标准化,所以rats不匹配rat。 @@操作符也支持text输入,允许一个文本字符串的显示转换为tsvector或者在简单情况下忽略tsquery。可用形式是: 1 2 3 4 tsvector @@ tsquery tsquery @@ tsvector text @@ tsquery text @@ text 形式text @@ tsquery等价于to_tsvector(text) @@ tsquery,而text @@ text等价于to_tsvector(text) @@ plainto_tsquery(text)。 父主题: 介绍
共100000条