华为云用户手册

  • addtime(expr1,expr2) 描述:返回时间或时间日期表达式expr1与时间表达式expr2相加后的值,返回值的格式与expr1保持一致。 参数: expr1为timestamp without time zone/time类型的表达式,expr2为time表达式。 返回值类型与expr1类型有关,解析为timestamp without time zone则返回timestamp without time zone,解析为time则返回time。 返回值类型:text、timestamp without time zone或time 示例: gaussdb=# SELECT addtime('2000-03-01 20:59:59', '00:00:01'); addtime --------------------- 2000-03-01 21:00:00 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • timestampadd(unit,interval,datetime_expr) 描述:返回一个新的时间戳,该时间戳是通过将unit的多个interval添加到datetime_expr来计算的。 参数:参数介绍如表16所示。 表16 参数说明 参数 类型 描述 取值范围 unit 关键字 时间间隔单位。 YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND、Y、MM(月)、D、H、M(分钟)、S、US、YRS、QTR、MON、HRS、MIN、YEARS、WEEKS或HOURS等。 interval numeric 时间间隔数值。 和类型范围一致。 datetime_expr 时间类型表达式、text、datetime、date或time等类型 需要变更的时间日期。若为text类型则返回text,为time则返回time,其他情况返回datetime。 和类型范围一致。 返回值类型:DATETIME、TEXT、TIME WITHOUT TIMEZONE 示例: gaussdb=# SELECT TIMESTAMPADD(DAY,-2,'2022-07-27'); timestampadd -------------- 2022-07-25 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 timestampadd实际注册的函数为timestamp_add,可以用“\df timestamp_add”等指令查询函数详细入参与返回值。 在PREPARE语句中,timestampadd的第一个参数为关键字,不支持使用参数$1替代,例如:PREPARE p1 AS SELECT timestampadd($1, -2, '2023-01-01');
  • time_to_sec() 描述:将time类型入参转化为秒数。 参数:入参为时间类型表达式、text、datetime、date或time等类型。时间表达式按照time来解析。 返回值类型:int 示例: gaussdb=# SELECT time_to_sec('00:00:01'); time_to_sec ------------- 1 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • to_days() 描述:返回指定日期自0000年1月1日以来的天数。 参数:入参为时间类型表达式、text、datetime、date或time等类型。时间表达式按照date来解析。 返回值类型:bigint 示例: gaussdb=# SELECT to_days('2000-1-1'); to_days --------- 730485 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • timediff() 描述:计算两个时间之间的差值,并返回一个时间间隔。 参数:有两个参数,为时间类型表达式、text、datetime、date或time等类型 返回值类型:TIME WITHOUT TIMEZONE 示例: gaussdb=# SELECT timediff(date'2022-12-30',20221229); timediff ---------- 24:00:00 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • quarter() 描述:输入一个日期类型,返回对应的日期的季度部分。 参数:入参为指定提取的日期时间,是时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。 返回值类型:bigint 示例: gaussdb=# SELECT QUARTER('2012-1-1'); quarter --------- 1 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • str_to_date(str, format) 描述:将指定的字符串根据指定日期格式转为日期/时间。 参数: str:text类型,需要格式化成日期的字符串; format:text类型,格式化字符串。format参数列表如表13所示。 表13 format的取值及含义 format取值 含义 %a 星期的缩写(Sun..Sat)。 %b 月份的缩写(Jan..Dec)。 %c 月份数字(0..12)。 %D 带有英语前缀的月份中的每天(0th, 1st, 2nd, 3rd, …)。 %d 月份中的每天的两位数字表示(00..31)。 %e 月份中的每天的数字表示(0..31)。 %f 微秒(000000..999999)。 %H 小时(00..23)。 %h 小时(01..12)。 %I 小时(01..12)。 %i 分钟(00..59)。 %j 一年中的每天(001..366)。 %k 小时(0..23)。 %l 小时(1..12)。 %M 月份名称(January..December)。 %m 两位数字月份(00..12)。 %p AM或者PM。 %r 十二小时制时间(hh:mm:ss后跟AM或PM)。 %S 秒(00..59)。 %s 秒(00..59)。 %T 二十四小时制时间(hh:mm:ss)。 %U 一年中的星期(00..53),每周的开始是星期天。 %u 一年中的星期(00..53),每周的开始是星期一。 %V 一年中的星期(01..53),每周的开始是星期天。 %v 一年中的星期(01..53),每周的开始是星期一。 %W 星期的名称(Sunday..Saturday)。 %w 星期中的每天(0=星期天..6=星期六)。 %X 一年中的星期,每周的开始是星期天,四位数字,用于%V。 %x 一年中的星期,每周的开始是星期一,四位数字,用于%v。 %Y 四位数字年份。 %y 两位数字年份。 返回值类型:text 示例: gaussdb=# SELECT str_to_date('May 1, 2013','%M %d,%Y');-- 2013-05-01 str_to_date ------------- 2013-05-01 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 只支持返回YYYY-MM-DD格式的时间。 对于包含0年0月0日的时间或者只包含时分秒的时间,会报警并返回NULL。
  • subdate(expr, days) 描述:指定开始的日期时间和要从开始的日期时间减去的天数值,返回相减后的日期结果值。 参数: expr:指定开始的日期时间,时间类型表达式,TEXT、DATE、DATETIME或TIME等类型。 days:需要减去的天数,int类型。 返回值类型:TEXT、DATE、DATETIME或TIME WITHOUT TIMEZONE。 示例: gaussdb=# SELECT SUBDATE('2023-1-1', 20); subdate ------------ 2022-12-12 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • subdate(expr,INTERVAL val unit) 描述:指定开始的日期时间和要从开始的日期时间减去的时间间隔,返回相减后的日期结果值。 参数:参数介绍如表14所示。 表14 参数说明 参数 类型 描述 取值范围 expr 时间类型表达式、text、datetime、date或time等类型 指定开始的日期时间。 和类型范围一致。 val 整数、浮点数、字符串等类型 指定要减去的时间间隔。 和类型范围一致。 unit 关键字 YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND等,具体请参见时间间隔表达式。 返回值类型:TEXT、DATE、DATETIME或TIME WITHOUT TIMEZONE。 示例: gaussdb=# SELECT SUBDATE('2018-05-01', INTERVAL 1 YEAR); subdate ------------ 2017-05-01 (1 row) 1. 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 2. 在PREPARE语句中,subdate的第二个参数为interval表达式,当使用参数$1完全替代时,会导致结果非预期,例如:PREPARE p1 AS SELECT subdate('2023-01-01 10:00:00', $1); EXECUTE p1(interval 13 hour);该用例返回非预期结果为'2023-01-01 10:00:00'。
  • minute() 描述:输入一个时间类型,返回对应的时间的分钟部分。 参数:时间类型表达式、text、datetime、date或time等类型。 返回值类型:bigint 示例: gaussdb=# SELECT MINUTE(time'10:10:10'); minute -------- 10 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • period_add(period, month_number) 描述:在指定时间段上加上指定的月数,将结果作为时间段返回。 参数: period:bigint,使用YYYYMM或YYMM格式表示的日期。 month_number:bigint,需要加上的月数,允许为负数。 返回值类型:bigint,使用YYYYMM格式表示的日期。 示例: gaussdb=# SELECT period_add(202205, -12); period_add ------------ 202105 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • from_days(days) 描述:给定一个天数,返回相应的日期值。 参数:入参为时间类型表达式、text、datetime、date或time等类型。 返回值类型:date 示例: gaussdb=# SELECT from_days(36524);--0099-12-31 from_days ------------ 0099-12-31 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 对于空字符和0字符,将作为0处理;对于无法正确转换为bigint的入参,将报错。 入参小于366时,返回日期为0000-00-00。
  • get_format({DATE | TIME | DATETIME | TIMESTAMP}, {'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL'}) 描述:将日期或时间或datetime转换为指定格式的时间格式字符串,即不同地区的“年月日 时分秒”格式和排序标准。 参数: DATE|TIME|DATETIME|TIMESTAMP:表示时间类型,为关键字。 'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL':五种时间格式,text类型。 返回值类型:text 示例: gaussdb=# SELECT get_format(date, 'eur'); get_format ------------ %d.%m.%y (1 row) gaussdb=# SELECT get_format(date, 'usa'); get_format ------------ %m.%d.%y (1 row) 1. 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 2. 在PREPARE语句中,get_format的第一个参数为关键字,不支持使用参数$1替代,例如:PREPARE p1 AS SELECT get_format($1, 'usa');
  • makedate(year,dayofyear) 描述:根据年份和天数值返回日期。 参数: year:bigint。 dayofyear:bigint,该年的第若干天,允许跨年,小于等于0时返回null。 返回值类型:date 示例: gaussdb=# SELECT makedate(2000, 60); makedate ------------ 2000-02-29 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • microsecond() 描述:输入一个时间类型,返回对应的时间的微秒部分。 参数:时间类型表达式、text、datetime、date或time等类型。 返回值类型:bigint 示例: gaussdb=# SELECT MICROSECOND('2023-5-5 10:10:10.24485'); microsecond ------------- 244850 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • hour() 描述:输入一个时间类型,返回对应的时间的小时部分。 参数:时间类型表达式、text、datetime、date或time等类型。 返回值类型:bigint 示例: gaussdb=# SELECT HOUR('10:10:10.1'); hour ------ 10 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • monthname() 描述:返回日期的月份全名。 参数:入参为时间类型表达式、text、datetime、date或time等类型。 返回值类型:text 示例: gaussdb=# SELECT monthname('2023-02-28'); monthname ----------- February (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 返回值使用的语言由lc_time_names系统变量的值控制。
  • period_diff(p1,p2) 描述:计算两个时间段的月份差。 参数:参数类型为bigint,两个参数同时使用YYMM或YYYYMM格式来表示时间段。 返回值类型:bigint,月份差。 示例: gaussdb=# SELECT period_diff('202101', '202102'); period_diff ------------- -1 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • from_unixtime(unix_timestamp[,format]) 描述:将Unix时间戳转换为日期时间格式的函数。Unix时间戳是指从1970年1月1日08:00:00 UTC到指定时间的秒数。 参数: unix_timestamp:unix时间戳,numeric类型。 format:时间格式,text类型。 返回值类型:text/datetime 示例: gaussdb=# SELECT from_unixtime(1111885200); from_unixtime --------------------- 2005-03-27 09:00:00 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • month() 描述:返回从过去日期开始的月份。 参数:入参为指定提取的日期时间,是时间类型表达式、TEXT、DATETIME、DATE或TIME等类型。 返回值类型:int 示例: gaussdb=# SELECT month('2021-11-30'); month ------- 11 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • second() 描述:输入一个时间类型,返回对应的时间的秒部分。 参数:时间类型表达式、text、datetime、date或time等类型。 返回值类型:bigint 示例: gaussdb=# SELECT SECOND('2023-5-5 10:10:10'); second -------- 10 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • day()/dayofmonth() 描述:提取日期时间的天数部分,将结果返回。dayofmonth()是day()的别名,功能完全相同。 参数:入参为指定提取的日期时间,是时间类型表达式、text、datetime、date或time等类型。 返回值类型:int 示例: gaussdb=# SELECT day('2023-01-02'); day ----- 2 (1 row) gaussdb=# SELECT dayofmonth('23-05-22'); dayofmonth ------------ 22 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • dayofweek() 描述:返回日期的工作日索引(1=周日,2=周一,…,7=周六)。 参数:时间类型表达式、text、datetime、date或time等类型。 返回值类型:bigint 示例: gaussdb=# SELECT dayofweek('2023-04-16'); dayofweek ----------- 1 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • extract(unit FROM date) 描述:提取时间的一部分 ,此函数在其他模式可以使用,但行为差异较大。当sql_compatibility = 'B'时,设置参数b_format_version = '5.7'和参数b_format_dev_version = 's1'时该函数的表现如下所述。 参数: unit:text。具体的取值类型如表11所示。 date:date/time/datetime/text等时间类型表达式。 返回值类型:bigint 表11 unit的取值及含义 UNIT 取值 含义 MICROSECOND 微秒 SECOND 秒 MINUTE 分钟 HOUR 小时 DAY 天数 WEEK 周数 MONTH 月份 QUARTER 季度 YEAR 年份 SECOND_MICROSECOND 秒、微秒的拼接值 MINUTE_MICROSECOND 分钟、秒、微秒的拼接值 MINUTE_SECOND 分钟、秒的拼接值 HOUR_MICROSECOND 小时、分钟、秒、微秒的拼接值 HOUR_SECOND 小时、分钟、秒的拼接值 HOUR_MINUTE 小时、分钟的拼接值 DAY_MICROSECOND 天数、小时、分钟、秒、微秒的拼接值 DAY_SECOND 天数、小时、分钟、秒的拼接值 DAY_MINUTE 天数、分钟的拼接值 DAY_HOUR 天数、小时的拼接值 YEAR_MONTH 年份、月份的拼接值 EPOCH 表示自1970-01-01 00:00:00-00 UTC以来的秒数或时间间隔的总秒数 示例: gaussdb=# SELECT extract(YEAR FROM '2023-10-11'); extract --------- 2023 (1 row) gaussdb=# SELECT extract(QUARTER FROM '2023-10-11'); extract --------- 4 (1 row) gaussdb=# SELECT extract(MONTH FROM '2023-10-11'); extract --------- 10 (1 row) gaussdb=# SELECT extract(WEEK FROM '2023-10-11'); extract --------- 41 (1 row) gaussdb=# SELECT extract(DAY FROM '2023-10-11'); extract --------- 11 (1 row) gaussdb=# SELECT extract(HOUR FROM '2023-10-11 12:13:14'); extract --------- 12 (1 row) extract在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时,调用的函数实际上注册为b_extract,在其他情况中,实际注册的函数为date_part,可以用“\df b_extract”等指令查询函数详细入参与返回值。 GUC参数default_week_format用于处理特殊周问题,默认值为0。详细描述如表12所示。 表12 default_week_format说明 default_week_format 一周的第一天 范围 哪一周是第一周 0 周日 0~53 今年有周日的周。 1 周一 0~53 今年有4天及以上的周。 2 周日 1~53 今年有周日的周。 3 周一 1~53 今年有4天及以上的周。 4 周日 0~53 今年有4天及以上的周。 5 周一 0~53 今年有周一的周。 6 周日 1~53 今年有4天及以上的周。 7 周一 1~53 今年有周一的周。
  • dayname() 描述:返回日期的星期几名称。 参数:入参为时间类型表达式、text、datetime、date或time等类型。 返回值类型:text 示例: gaussdb=# SELECT dayname('2023-10-11'); dayname ----------- Wednesday (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 返回值使用的语言由GUC参数lc_time_names控制。
  • dayofyear() 描述:返回一年中的第几天。 参数:入参为时间类型表达式、text、datetime、date或time等类型。 返回值类型:int,取值范围为[1,366]。 示例: gaussdb=# SELECT dayofyear('2000-12-31'); dayofyear ----------- 366 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • date_sub(expr, days) 描述:指定开始的日期时间和要从开始的日期时间减去的天数值,返回相减后的日期结果值。 参数: expr:指定开始的日期时间,时间类型表达式,TEXT、DATE、DATETIME或TIME等类型。 days:需要减去的天数,int类型。 返回值类型:TEXT、DATE、DATETIME或TIME WITHOUT TIMEZONE。 示例: gaussdb=# SELECT DATE_SUB('2023-1-1', 20); date_sub ------------ 2022-12-12 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • date_sub(date, INTERVAL val unit) 描述:将日期减上一定的时间间隔,返回一个新的日期。 参数:参数介绍如表9所示。 表9 参数说明 参数 类型 描述 取值范围 date 时间类型表达式、text、datetime、date或time等类型 要加上时间间隔的日期。 和类型范围一致。 val 整数、浮点数、字符串等类型 要加上的时间间隔。 和类型范围一致。 unit 关键字 时间间隔的单位。 YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND等,具体请参见时间间隔表达式。 返回值类型:TEXT、DATE、DATETIME或TIME WITHOUT TIMEZONE。 示例: gaussdb=# SELECT DATE_SUB('2018-05-01', INTERVAL 1 YEAR); date_sub ------------ 2017-05-01 (1 row) 1. 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。 2. 在PREPARE语句中,date_sub的第二个参数为interval表达式,不支持使用参数$1替代,例如:PREPARE p1 AS SELECT date_sub('2023-01-01 10:00:00', $1);
  • datediff(expr1, expr2) 描述:返回两个时间表达式之间相差的天数。 参数:参数介绍如表10所示。 表10 参数说明 参数 类型 描述 取值范围 expr1 时间类型表达式、text、datetime、date或time等类型 某个时间。 和类型范围一致。 expr2 时间类型表达式、text、datetime、date或time等类型 某个时间。 和类型范围一致。 返回值类型:int 示例: gaussdb=# SELECT datediff('2021-11-12','2021-11-13'); datediff ---------- -1 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
  • date_format(date, format) 描述:将日期时间以指定格式输出。 参数:参数介绍如表7所示。 表7 参数说明 参数 类型 描述 取值范围 date 时间类型表达式、text、datetime、date或time等类型 需要格式化的日期。 和类型范围一致。 format text 格式化字符串。 如表8所示。 format参数列表如表8所示。 表8 format的取值及含义 format取值 含义 %a 星期的缩写(Sun..Sat)。 %b 月份的缩写(Jan..Dec)。 %c 月份数字(0..12)。 %D 带有英语前缀的月份中的每天(0th, 1st, 2nd, 3rd, …)。 %d 月份中的每天的两位数字表示(00..31)。 %e 月份中的每天的数字表示(0..31)。 %f 微秒(000000..999999)。 %H 小时(00..23)。 %h 小时(01..12)。 %I 小时(01..12)。 %i 分钟(00..59)。 %j 一年中的每天(001..366)。 %k 小时(0..23)。 %l 小时(1..12)。 %M 月份名称(January..December)。 %m 两位数字月份(00..12)。 %p AM或者PM。 %r 十二小时制时间(hh:mm:ss后跟AM或PM)。 %S 秒(00..59)。 %s 秒(00..59)。 %T 二十四小时制时间(hh:mm:ss)。 %U 一年中的星期(00..53),每周的开始是星期天。 %u 一年中的星期(00..53),每周的开始是星期一。 %V 一年中的星期(01..53),每周的开始是星期天。 %v 一年中的星期(01..53),每周的开始是星期一。 %W 星期的名称(Sunday..Saturday)。 %w 星期中的每天(0=星期天..6=星期六)。 %X 一年中的星期,每周的开始是星期天,四位数字,用于%V。 %x 一年中的星期,每周的开始是星期一,四位数字,用于%v。 %Y 四位数字年份。 %y 两位数字年份。 返回值类型:text 示例: gaussdb=# SELECT date_format('2023-10-11 12:13:14.151617','%b %c %M %m'); date_format ------------------- Oct 10 October 10 (1 row) 该函数在sql_compatibility = 'B',且参数b_format_version值为5.7、b_format_dev_version值为s1时有效。
共100000条
提示

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