华为云用户手册

  • 时间/日期操作符 用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。 比如下面示例没有明确数据类型就会出现异常错误。 1 SELECT date '2001-10-01' - '7' AS RESULT; 表1 时间和日期操作符 操作符 示例 + date类型参数与integer参数相加,获取时间间隔为7天后的时间: 12345 SELECT date '2001-09-28' + integer '7' AS RESULT; result --------------------- 2001-10-05 00:00:00(1 row) date类型参数与interval参数相加,获取时间间隔为1小时后的时间: 12345 SELECT date '2001-09-28' + interval '1 hour' AS RESULT; result --------------------- 2001-09-28 01:00:00(1 row) date类型参数与interval参数相加,获取时间间隔为1个月的时间: date函数对于日期相加减超过月份的日期范围,会对齐到对应月份最后一天,不超过则不处理。 12345 SELECT date '2021-01-31' + interval '1 month' AS RESULT; result--------------------- 2021-02-28 00:00:00(1 row) 12345 SELECT date '2021-02-28' + interval '1 month' AS RESULT; result--------------------- 2021-03-28 00:00:00(1 row) date类型参数与time类型参数相加,获取具体的日期和时间结果: 12345 SELECT date '2001-09-28' + time '03:00' AS RESULT; result --------------------- 2001-09-28 03:00:00(1 row) interval参数相加,获取两个时间间隔之和: 12345 SELECT interval '1 day' + interval '1 hour' AS RESULT; result ---------------- 1 day 01:00:00(1 row) timestamp时间类型参数与interval参数相加,获取间隔23小时后的时间: 12345 SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result --------------------- 2001-09-29 00:00:00(1 row) time类型参数与interval参数相加,获取间隔时间为3小时后的时间: 12345 SELECT time '01:00' + interval '3 hours' AS RESULT; result ---------- 04:00:00(1 row) - date类型参数相减,获取两个日期的时间差: 12345 SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result -------- 3 days(1 row) date类型参数与integer参数相减,返回timestamp类型,获取两者的时间差: 12345 SELECT date '2001-10-01' - integer '7' AS RESULT; result --------------------- 2001-09-24 00:00:00(1 row) date类型参数与interval参数相减,获取两者的日期、时间差: 12345 SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result --------------------- 2001-09-27 23:00:00(1 row) time类型参数相减,获取两参数的时间差: 12345 SELECT time '05:00' - time '03:00' AS RESULT; result ---------- 02:00:00(1 row) time类型参数与interval相减,获取两参数的时间差: 12345 SELECT time '05:00' - interval '2 hours' AS RESULT; result ---------- 03:00:00(1 row) timestamp类型参数与interval相减,从时间戳中减去时间间隔,获取两者的日期时间差: 12345 SELECT timestamp '2001-09-28 23:00' - interval '23 hours' AS RESULT; result --------------------- 2001-09-28 00:00:00(1 row) interval参数相减,获取两者的时间差: 12345 SELECT interval '1 day' - interval '1 hour' AS RESULT; result ---------- 23:00:00(1 row) timestamp类型参数相减,获取两者的日期时间差: 12345 SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' AS RESULT; result ---------------- 1 day 15:00:00(1 row) 获取当前日期的前一天: 12345 select now() - interval '1 day'AS RESULT; result------------------------------- 2022-08-08 01:46:15.555406+00(1 row) * 将时间间隔乘以数量: 12345 SELECT 900 * interval '1 second' AS RESULT; result ---------- 00:15:00(1 row) 12345 SELECT 21 * interval '1 day' AS RESULT; result --------- 21 days(1 row) 12345 SELECT double precision '3.5' * interval '1 hour' AS RESULT; result ---------- 03:30:00(1 row) / 用时间间隔除以数量,获取一段时间中的某一段: 12345 SELECT interval '1 hour' / double precision '1.5' AS RESULT; result ---------- 00:40:00(1 row) 父主题: 时间、日期处理函数和操作符
  • ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) 描述:获取tsvector列的统计数据。 返回类型:setof record 示例: 123456 SELECT ts_stat('select ''hello world''::tsvector'); ts_stat ------------- (world,1,1) (hello,1,1)(2 rows)
  • ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) 描述:测试一个配置。 返回类型:setof record 示例: 123456789 SELECT ts_debug('english', 'The Brightest supernovaes'); ts_debug ----------------------------------------------------------------------------------- (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",Brightest,{english_stem},english_stem,{brightest}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",supernovaes,{english_stem},english_stem,{supernova})(5 rows)
  • ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 12345678 SELECT ts_parse('default', 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar)(4 rows)
  • ts_parse(parser_oid oid, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 12345678 SELECT ts_parse(3722, 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar)(4 rows)
  • ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627 SELECT ts_token_type(3722); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity")(23 rows)
  • ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627 SELECT ts_token_type('default'); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity")(23 rows)
  • date_format(timestamp, fmt) date_format函数将日期参数按照fmt指定的格式转换为字符串。 示例: 1 2 3 4 5 6 7 8 9101112131415 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) 表1显示了可以用于将日期参数格式化输出的格式类型,这些格式类型适用于函数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暂不支持。
  • log(double precision or numeric) 描述:以10为底的对数。 ORA和TD兼容模式下,表现为以10为底的对数。 MySQL兼容模式下,表现为自然对数。 返回值类型:与输入相同。 示例: 1 2 3 4 5 6 7 8 9101112131415161718 -- ORA兼容模式SELECT log(100.0); log -------------------- 2.0000000000000000(1 row)-- TD兼容模式SELECT log(100.0); log-------------------- 2.0000000000000000(1 row)-- MySQL兼容模式SELECT log(100.0); log-------------------- 4.6051701859880914(1 row)
  • width_bucket(operand numeric, b1 numeric, b2 numeric, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 12345 SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket-------------- 3(1 row)
  • width_bucket(operand double precision, b1 double precision, b2 double precision, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 12345 SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket-------------- 3(1 row)
  • round(double precision or numeric) 描述:离输入参数最近的整数。 返回值类型:与输入相同。 示例: 1 2 3 4 5 6 7 8 91011 SELECT round(42.4); round ------- 42(1 row)SELECT round(42.6); round ------- 43(1 row) 当调用round函数时,数值类型将舍入零,而(在大多数计算机上) 实数和双精度型,以最接近的偶数为结果。
  • yearweek(date[, mode]) 描述:返回给定日期date在本年中对应的年份和周数,周数范围为[1, 53]。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 91011 select yearweek('2019-12-31'); yearweek---------- 201952(1 row)select yearweek('2019-1-1'); yearweek---------- 201852(1 row)
  • str_to_date(str, format) 描述:将日期/时间格式的字符串(str),按照所提供的显示格式(format)转换为日期类型的值。 返回值类型:timestamp 示例: 1 2 3 4 5 6 7 8 910 SELECT str_to_date('01,5,2021','%d,%m,%Y'); str_to_date--------------------- 2021-05-01 00:00:00(1 row)SELECT str_to_date('01,5,2021,09,30,17','%d,%m,%Y,%h,%i,%s'); str_to_date--------------------- 2021-05-01 09:30:17(1 row) 适用于str_to_date的格式化输入的格式类型参考表1。这里仅支持“日期”格式、“日期+时间”格式的输入转换,对于仅“时间”格式的输入场景请使用str_to_time。
  • str_to_time(str, format) 描述:将时间格式的字符串(str),按照所提供的显示格式(format)转换为时间类型的值。 返回值类型:time 示例: 12345 SELECT str_to_time('09:30:17','%h:%i:%s'); str_to_time------------- 09:30:17(1 row) 适用于str_to_time的格式化输入的格式类型参考表1,这里仅支持“时间”格式的输入转换,对于“日期”格式、“日期+时间”格式的输入场景请使用str_to_date。
  • week(date[, mode]) 描述:根据模式返回指定日期时间所处年份中对应的周数,默认模式为0。 返回值类型:integer 表1 week函数中mode模式的工作原理 模式 一周的第一天 周数范围 第一周的判断规则 0 星期日 0-53 元旦后的第一个星期日所在周 1 星期一 0-53 元旦后有四天或者更多天所在周 2 星期日 1-53 元旦后的第一个星期日所在周 3 星期一 1-53 元旦后有四天或者更多天所在周 4 星期日 0-53 元旦后有四天或者更多天所在周 5 星期一 0-53 元旦后的第一个星期一所在周 6 星期日 1-53 元旦后有四天或者更多天所在周 7 星期一 1-53 元旦后的第一个星期一所在周 示例: 1 2 3 4 5 6 7 8 91011121314151617181920212223 select week('2018-01-01'); week------ 0(1 row)select week('2018-01-01', 0); week------ 0(1 row)select week('2020-12-31', 1); week------ 53(1 row)select week('2020-12-31', 5); week------ 52(1 row)
  • time_format(time, fmt) 描述:time_format函数将日期参数按照fmt指定的格式转换为字符串。与date_format函数类似,但格式字符串只能包含小时、分钟、秒和微秒的格式说明符,如果包含其他说明符则会返回NULL值或0。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9101112131415 SELECT time_format('2009-10-04 22:23:00', '%M %D %W'); time_format-------------------- (1 row)SELECT time_format('2021-02-20 08:30:45', '%Y-%m-%d %H:%i:%S'); time_format--------------------- 0000-00-00 08:30:45(1 row)SELECT time_format('2021-02-20 18:10:15', '%r-%T'); time_format---------------------- 06:10:15 PM-18:10:15(1 row) time_format仅支持时间相关的格式输出(%f、%H、%h、%I、%i、%k、%l、%p、%r、%S、%s、%T),不支持日期相关格式,其他情况处理为普通字符。
  • || 描述:数组与数组进行连接 示例: 12345 SELECT ARRAY[1,2,3] || ARRAY[4,5,6] AS RESULT; result --------------- {1,2,3,4,5,6}(1 row) 12345 SELECT ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] AS RESULT; result --------------------------- {{1,2,3},{4,5,6},{7,8,9}}(1 row)
  • rb_clear(roaringbitmap,int,int) 描述:从roaringbitmap中清除指定范围内的元素。 返回值类型:roaringbitmap 示例: 1 SELECT rb_to_array(rb_clear(rb_build('{1,2,3}'),1,2)); rb_to_array ------------- {2,3} (1 row)
  • rb_containedby_rb(roaringbitmap,roaringbitmap) 描述:判断跟定的第二个roaringbitmap是否包含第一个roaringbitmap。 返回值类型:bool 示例: 12345 SELECT rb_containedby_rb(rb_build('{1,3}'), rb_build('{2,3}'));rb_containedby_rb---------------f(1 row)
  • rb_contain_rb(roaringbitmap,roaringbitmap) 描述:判断第一个roaringbitmap是否包含第二个roaringbitmap。 返回值类型:bool 示例: 12345 SELECT rb_contain_rb(rb_build('{1,3}'), rb_build('{2,3}'));rb_contain_rb---------------f(1 row)
  • rb_build(array) 描述:将int数组转成roaringbitmap类型。 返回值类型:roaringbitmap 示例: 12345 SELECT rb_build('{1,2,3}');rb_build------------------------------------------------\x3a300000010000000000020010000000010002000300(1 row) 1 2 3 4 5 6 7 8 91011121314151617181920212223 CREATE TABLE r_row (a int, b text, c roaringbitmap);NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default.HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.CREATE TABLEINSERT INTO r_row values (1, 'a', rb_build('{1,2,3}'));INSERT 0 1SELECT * FROM r_row; a | b | c---+---+------------------------------------------------ 1 | a | \x3a300000010000000000020010000000010002000300(1 row)INSERT INTO r_row values (2, 'b', rb_build('{}'));INSERT 0 1SELECT * FROM r_row; a | b | c---+---+------------------------------------------------ 2 | b | \x3a30000000000000 1 | a | \x3a300000010000000000020010000000010002000300(2 rows)
  • rb_and_cardinality(roaringbitmap, roaringbitmap) 描述:计算两个roaringbitmap的交集的基数。 返回值类型:int 示例: 12345 SELECT rb_and_cardinality(rb_build('{1,2,3}'), rb_build('{2,3,4}'));rb_and_cardinality--------------------2(1 row)
  • rb_andnot_cardinality(roaringbitmap, roaringbitmap) 描述:计算两个roaringbitmap按照andnot计算结果以后的基数。 返回值类型:int 示例: 12345 SELECT rb_andnot_cardinality(rb_build('{1,2,3}'), rb_build('{2,3,4}'));rb_andnot_cardinality-----------------------1(1 row)
  • rb_to_array(roaringbitmap) 描述:rb_build的逆向操作,把roaringBitmap转成int数组。 返回值类型: array 示例: 1 2 3 4 5 6 7 8 910 SELECT rb_to_array(c) FROM r_row;rb_to_array-------------{1,2,3}(1 row)SELECT rb_to_array('\x3a300000010000000000020010000000010002000300');rb_to_array-------------{1,2,3}(1 row)
  • rb_andnot(roaringbitmap, roaringbitmap) 描述:在第一个roaringbitmap集合中,但是不在第二个roaringbitmap中的集合。 返回值类型:roaringbitmap 示例: 12345 SELECT rb_to_array(rb_andnot(rb_build('{1,2,3}'), rb_build('{2,3,4}')));rb_to_array-------------{1}(1 row)
  • rb_or_cardinality(roaringbitmap, roaringbitmap) 描述:计算两个roaringbitmap的并集的基数。 返回值类型:int 示例: 12345 SELECT rb_or_cardinality(rb_build('{1,2,3}'), rb_build('{2,3,4}'));rb_or_cardinality-------------------4(1 row)
  • rb_xor_cardinality(roaringbitmap, roaringbitmap) 描述:计算两个roaringbitmap异或以后的基数。 返回值类型:int 示例: 12345 SELECT rb_xor_cardinality(rb_build('{1,2,3}'), rb_build('{2,3,4}'));rb_xor_cardinality--------------------2(1 row)
  • version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: 12345 SELECT version(); version --------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 9.2.4 gsql (( GaussDB 8.2.1 build 39137c2d) compiled at 2022-09-23 15:43:11 commit 3629 last mr 5138 release) on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 5.4.0, 64-bit(1 row)
  • pgxc_version() 描述:Postgres-XC版本信息。 返回值类型:text 示例: 12345 SELECT pgxc_version(); pgxc_version ------------------------------------------------------------------------------------------------------------- Postgres-XC 1.1 on x86_64-unknown-linux-gnu, based on PostgreSQL 9.2.4, compiled by g++ (GCC) 5.4.0, 64-bit(1 row)
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全