华为云用户手册

  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • curtime([fsp]) 描述:当前时间。fsp为选填参数,参数类型为整型,表示指定返回的小数秒精度。该函数仅8.2.0及以上集群版本支持。 返回值类型:time with time zone 示例: 1 2 3 4 5 6 7 8 9 10 SELECT curtime(); timetz -------------------- 16:58:07.086215+08 (1 row) SELECT curtime(2); timetz -------------------- 16:58:07.08+08 (1 row)
  • subtime(timestamp | time | text, interval | text) 描述:返回给定日期/时间减去指定时间间隔的结果。该函数仅8.2.0及以上集群版本支持。 返回值类型:与第一个入参类型相同。 示例: 1 2 3 4 5 select subtime('2020-11-13 01:01:01', '23:59:59'); addtime --------------------- 2020-11-12 01:01:02 (1 row)
  • timediff(timestamp | time | text, timestamp | time | text) 描述:将两个日期参数相减。若相减值为负,则函数返回值为负。两个入参类型要求一致。该函数仅8.2.0及以上集群版本支持。 返回值类型:time 示例: 1 2 3 4 5 SELECT timediff('2022-7-5 1:1:1', '2021-7-5 1:1:1'); timediff --------------- 8760:00:00 (1 row)
  • convert_tz(timestamp, from_tz, to_tz) 描述:将时间日期值timestamp从from_tz (text)给出的时区转到to_tz(text)给出的时区,返回转换后的时区时间。该函数仅8.2.0及以上集群版本支持。 返回值类型:timestamp without time zone 示例: 1 2 3 4 5 6 7 8 9 10 SELECT convert_tz('2018-12-25 13:25:00', '+02:00', '+08:00'); convert_tz -------------------- 2018-12-25 19:25:00 (1 row) SELECT convert_tz('2000-02-28 23:00:00', 'GMT', 'MET'); convert_tz -------------------- 2000-02-29 00:00:00 (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)
  • 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)
  • 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)
  • addtime(timestamp | time | text, interval | text) 描述:返回给定日期/时间加上指定时间间隔的结果。该函数仅8.2.0及以上集群版本支持。 返回值类型:与第一个入参类型相同。 示例: 1 2 3 4 5 SELECT ADDTIME('2020-11-13 01:01:01', '23:59:59'); addtime --------------------- 2020-11-14 01:01:00 (1 row) addtime(time, interval) 1 2 3 4 5 6 7 8 9 10 11 SELECT ADDTIME('20:1:1'::TIME, '20:59:59+8'); addtime ----------- 233:01:00 (1 row) SELECT ADDTIME('20:1:1'::TIME, '8 20:59:59'); addtime ----------- 233:01:00 (1 row) addtime(text, interval) 1 2 3 4 5 6 7 8 9 10 SELECT ADDTIME('20:1:1', '20:59:59+8'); addtime ----------- 233:01:00 (1 row) SELECT ADDTIME('20:1:1', '8 20:59:59'); addtime ----------- 233:01:00 (1 row)
  • 时间/日期操作符 用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。 比如下面示例没有明确数据类型就会出现异常错误。 1 SELECT date '2001-10-01' - '7' AS RESULT; 表1 时间和日期操作符 操作符 示例 + date类型参数与integer参数相加,获取时间间隔为7天后的时间: 1 2 3 4 5 SELECT date '2001-09-28' + integer '7' AS RESULT; result --------------------- 2001-10-05 00:00:00 (1 row) date类型参数与interval参数相加,获取时间间隔为1小时后的时间: 1 2 3 4 5 SELECT date '2001-09-28' + interval '1 hour' AS RESULT; result --------------------- 2001-09-28 01:00:00 (1 row) date类型参数与interval参数相加,获取时间间隔为1个月的时间: date函数对于日期相加减超过月份的日期范围,会对齐到对应月份最后一天,不超过则不处理。 1 2 3 4 5 SELECT date '2021-01-31' + interval '1 month' AS RESULT; result --------------------- 2021-02-28 00:00:00 (1 row) 1 2 3 4 5 SELECT date '2021-02-28' + interval '1 month' AS RESULT; result --------------------- 2021-03-28 00:00:00 (1 row) date类型参数与time类型参数相加,获取具体的日期和时间结果: 1 2 3 4 5 SELECT date '2001-09-28' + time '03:00' AS RESULT; result --------------------- 2001-09-28 03:00:00 (1 row) interval参数相加,获取两个时间间隔之和: 1 2 3 4 5 SELECT interval '1 day' + interval '1 hour' AS RESULT; result ---------------- 1 day 01:00:00 (1 row) timestamp时间类型参数与interval参数相加,获取间隔23小时后的时间: 1 2 3 4 5 SELECT timestamp '2001-09-28 01:00' + interval '23 hours' AS RESULT; result --------------------- 2001-09-29 00:00:00 (1 row) time类型参数与interval参数相加,获取间隔时间为3小时后的时间: 1 2 3 4 5 SELECT time '01:00' + interval '3 hours' AS RESULT; result ---------- 04:00:00 (1 row) - date类型参数相减,获取两个日期的时间差: 1 2 3 4 5 SELECT date '2001-10-01' - date '2001-09-28' AS RESULT; result -------- 3 days (1 row) date类型参数与integer参数相减,返回timestamp类型,获取两者的时间差: 1 2 3 4 5 SELECT date '2001-10-01' - integer '7' AS RESULT; result --------------------- 2001-09-24 00:00:00 (1 row) date类型参数与interval参数相减,获取两者的日期、时间差: 1 2 3 4 5 SELECT date '2001-09-28' - interval '1 hour' AS RESULT; result --------------------- 2001-09-27 23:00:00 (1 row) time类型参数相减,获取两参数的时间差: 1 2 3 4 5 SELECT time '05:00' - time '03:00' AS RESULT; result ---------- 02:00:00 (1 row) time类型参数与interval相减,获取两参数的时间差: 1 2 3 4 5 SELECT time '05:00' - interval '2 hours' AS RESULT; result ---------- 03:00:00 (1 row) timestamp类型参数与interval相减,从时间戳中减去时间间隔,获取两者的日期时间差: 1 2 3 4 5 SELECT timestamp '2001-09-28 23:00' - interval '23 hours' AS RESULT; result --------------------- 2001-09-28 00:00:00 (1 row) interval参数相减,获取两者的时间差: 1 2 3 4 5 SELECT interval '1 day' - interval '1 hour' AS RESULT; result ---------- 23:00:00 (1 row) timestamp类型参数相减,获取两者的日期时间差: 1 2 3 4 5 SELECT timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' AS RESULT; result ---------------- 1 day 15:00:00 (1 row) 获取当前日期的前一天: 1 2 3 4 5 select now() - interval '1 day'AS RESULT; result ------------------------------- 2022-08-08 01:46:15.555406+00 (1 row) * 将时间间隔乘以数量: 1 2 3 4 5 SELECT 900 * interval '1 second' AS RESULT; result ---------- 00:15:00 (1 row) 1 2 3 4 5 SELECT 21 * interval '1 day' AS RESULT; result --------- 21 days (1 row) 1 2 3 4 5 SELECT double precision '3.5' * interval '1 hour' AS RESULT; result ---------- 03:30:00 (1 row) / 用时间间隔除以数量,获取一段时间中的某一段: 1 2 3 4 5 SELECT interval '1 hour' / double precision '1.5' AS RESULT; result ---------- 00:40:00 (1 row) 父主题: 时间、日期处理函数和操作符
  • round(double precision or numeric) 描述:离输入参数最近的整数。 返回值类型:与输入相同。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT round(42.4); round ------- 42 (1 row) SELECT round(42.6); round ------- 43 (1 row) 当调用round函数时,数值类型将舍入零,而(在大多数计算机上) 实数和双精度型,以最接近的偶数为结果。
  • width_bucket(operand numeric, b1 numeric, b2 numeric, count int) 描述:设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。b1为分组范围的最小值,b2为分组范围的最大值,count为分组的个数。 返回值类型:integer 示例: 1 2 3 4 5 SELECT width_bucket(5.35, 0.024, 10.06, 5); width_bucket -------------- 3 (1 row)
共100000条