暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB数据库基础函数介绍-2

高斯精选 2023-10-23
230

【摘要】 作为华为自主创新研发的分布式关系型云数据库,GaussDB也拥有强大的函数支持体系。 本文主要从:数字操作函数、时间和日期处理函数、类型转换函数、数组函数、范围函数、窗口函数、聚集函数、安全函数、系统信息函数、动态脱敏函数等方面作一个简单介绍。

前言

函数是数据库中最基本的组成部分之一,它们用于定义和操作数据库中的表格、记录、索引和视图等对象。在数据库中,函数的作用非常重要,因为它们可以实现数据的复杂操作,如查询、更新、删除和排序等。

作为华为自主创新研发的分布式关系型云数据库,GaussDB也拥有强大的函数支持体系。 本文主要从:数字操作函数、时间和日期处理函数、类型转换函数、数组函数、范围函数、窗口函数、聚集函数、安全函数、系统信息函数、动态脱敏函数等方面作一个简单介绍。

函数在数据库中的作用

首先,我们先来了解一下函数在数据库中的作用:

实现数据的复杂操作:函数可以用于实现数据的复杂操作,如查询、更新、删除和排序等,从而提高了数据库的操作效率。

提高程序的可读性:函数可以用于定义复杂的SQL语句,从而使得程序的代码更加简洁明了。这有助于提高程序的可读性,使得代码更容易被他人理解和维护。
提高程序的效率:函数可以用于减少重复编写程序段的工作量,从而提高程序的编译和运行效率。此外,函数还可以减少网络传输的数据量,从而提高程序的运行效率。

支持标准组件式编程:函数可以用于实现标准组件式编程,从而提高程序的可重用性、共享性和可移植性。

支持算法设计的基本要求:函数可以用于实现算法设计的基本要求,如正确性、可读性、健壮性、效率和低存储量需求。这些要求可以通过函数来实现,从而使得程序更加健壮、高效和可靠。


时间和日期处理函数

在GaussDB数据库中,时间和日期处理函数用于处理和操作日期和时间相关的数据。这些函数包括获取当前日期和时间的函数、将日期和时间转换为数字格式的函数、处理日期和时间的函数等。

用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。

以下是一些常见的数据库时间和日期处理函数:

--age(timestamp, timestamp)
--描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负,入参可以都带timezone或都不带timezone。
--返回值类型:interval

--age(timestamp)
--描述:当前时间和参数相减,入参可以带或者不带timezone。
--返回值类型:interval

SELECT age(timestamp '2023-04-19', timestamp '1988-08-13'),age(timestamp '1988-08-13');

image.png

--clock_timestamp()
--描述:实时时钟的当前时间戳。volatile函数,每次扫描都会取最新的时间戳,因此在一次查询中每次调用结果不相同。
--返回值类型:timestamp with time zone

--current_time
--描述:当前时间。
--返回值类型:time with time zone

--current_date
--描述:当前日期。
--返回值类型:date

--current_timestamp
--描述:当前日期及时间。语句级别时间,同一个语句内返回结果不变。
--返回值类型:timestamp with time zone

select clock_timestamp(),current_time,current_date,current_timestamp

image.png

--date_part(text, timestamp)
--描述:获取日期或者时间值中子域的值,例如年或者小时的值。
--等效于extract(field from timestamp)。
--timestamp类型:abstime、date、interval、reltime、time with time zone、time without time zone、timestamp with time zone、timestamp without time zone。
--返回值类型:double precision

--date_part(text, interval)
--描述:获取月份的值。如果大于12,则取与12的模。等效于extract(field from timestamp)。
--返回值类型:double precision

SELECT date_part('hour', timestamp '2023-04-19 18:30:40'),date_part('month', interval '2 years 3 months');

image.png

--date_trunc(text, timestamp)
--描述:截取到参数text指定的精度。
--返回值类型:interval、timestamp with time zone、timestamp without time zone

--trunc(timestamp)
--描述:默认按天截取。

--trunc(arg1, arg2)
--描述:截取到arg2指定的精度。
--arg1类型:interval、timestamp with time zone、timestamp without time zone
--arg2类型:text
--返回值类型:interval、timestamp with time zone、timestamp without time zone

SELECT date_trunc('hour', timestamp  '2023-04-16 20:38:40')
      ,trunc(timestamp '2023-04-16 20:38:40')
      ,trunc(timestamp  '2023-04-16 20:38:40', 'minute')

;
image.png

--isfinite(date)
--描述:测试是否为有效日期。
--返回值类型:Boolean

--isfinite(timestamp)
--描述:测试判断是否为有效时间。
--返回值类型:Boolean

SELECT isfinite(date '2023-04-19'),isfinite(timestamp '2023-4-19 21:28:30');

image.png

--localtime
--描述:当前时间。
--返回值类型:time

--localtimestamp
--描述:当前日期及时间。
--返回值类型:timestamp

--now()
--描述:当前日期及时间。事务级别时间,同一个事务内返回结果相同。
--返回值类型:timestamp with time zone

--timenow()
--描述:当前日期及时间。
--返回值类型:timestamp with time zone

select localtime,localtimestamp,now(),timenow();

image.png

--add_months(d,n)
--描述:用于计算时间点d再加上n个月的时间。
--d:timestamp类型的值,以及可以隐式转换为timestamp类型的值。
--n:INTEGER类型的值,以及可以隐式转换为INTEGER类型的值。
--返回值类型:timestamp

SELECT add_months(to_date('2023-4-19', 'yyyy-mm-dd'), 11);

image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论