PostgreSQL 间隔 PostgreSQL timestamp PostgreSQL UUID PostgreSQL Interval 在本节中,我们要了解的工作PostgreSQL的时间Interval的数据类型,我们也看到实例的的区间数据类型。 并且最常用的Interval函数,例如NOW()、TO_CHAR()、EXTRACT()、justify_days()、justify_hours()、justify_interval()。PostgreSQL Interval值的输入和输出格式。 什么是 PostgreSQL Interval数据类型? 在 PostgreSQL 中,Interval是另一种数据类型,用于存储和部署 Time,以年、月、日、小时、分钟、秒等为单位。月和天的值是整数值,而秒的字段可以是分数值。 PostgreSQL Interval数据类型值涉及16 个字节的存储大小,这有助于存储可接受范围从 - 178000000 年到 178000000年的时间段。 注意:第二个字段中的小数位数称为精度 p。 PostgreSQL Interval数据类型的语法 PostgreSQL Interval 数据类型的语法如下: @ interval [ fields ] [ (p) ] 在上面的语法中,我们有以下参数: 范围 描述 fields field 参数用于显示时间。 p P 用于显示精度值。 @ 我们可以忽略@ 参数,因为它是一个可选参数。 让我们看一个示例示例,以便我们更好地理解如何使用 @ 参数和不**使用*@ 参数编写 Interval 值: @interval '6 months before'; @interval '2 hours 30 minutes'; 或者 interval '6 months before'; interval '2 hours 30 minutes'; 注意:我们可以使用上述两个语句,因为它们彼此对应。此外,一个区间值可以有一个可选的精度值 p,允许的范围从 0 到 6。 PostgreSQL Interval数据类型示例 让我们看一个示例来了解PostgreSQL Interval 数据类型是如何工作的。 在下面的例子中,我们将尝试找到2 小时 30 分钟之前的时间**,在去年的当前时间**;我们将使用以下命令: SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS "2 hours 30 minutes before last year"; 输出 执行上述命令后,我们将得到以下输出,显示前一年 2 小时 30 分钟: 我们已经看到了区间数据类型的主要示例并理解了它的工作原理。现在,我们将看到区间值的输入和输出格式。 首先,我们将了解输入格式的PostgreSQL Interval值: PostgreSQL Interval输入格式 在 PostgreSQL 中,我们有以下冗长的语法,这有助于我们编写Interval值: quantity unit [quantity unit...] [direction] 我们有以下参数,用于上述语法: Parameter Description quantity quantity是一个数字,它也接受像迹象+或- unit 该单元可以是任何千年,百年,十年,年,月,周,日,小时,分钟,秒,毫秒,微秒,或缩写可以是以下Y,M,d等和复数形式可以是月、日等 direction 该方向参数可以是前或空字符串。 注意:上述语法也用于Interval输出格式,称为 postgres_verbose。 在下面的示例中,我们将显示一些使用详细语法的Interval值: INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago'; ISO 8601 Interval格式 除了上面冗长的语法之外,为了借助ISO 8601 时间Interval来编写Interval值,PostgreSQL 为我们提供了两种方式,如下所示: Designators format Alternative format ISO 8601 的指示符格式如下: P quantity unit [ quantity unit ...] [ T [ quantity unit ...]] 在上述格式中,Interval值必需开始于字母P,并且字母T被用于定义时间的日单位。 下表显示了ISO 8601 Interval单位缩写: Abbreviation Description Y Years M Months (for the date part) W Weeks D Days H Hours M Minutes (for the time part) S Seconds 注意:M 可以是月或分钟,具体取决于它是在字母 T 之前还是之后。 让我们看一个ISO 8601 指示符格式的例子,以便我们更好地理解: 在ISO 8601格式指示符可以针对的Interval被写入5年4个月3天2小时1次分1秒: P5Y4M3DT2H1M1S ISO 8601的替代形式如下所示: P [ years-months-days ] [ T hours:minutes:seconds ] 并且它还以字母 P 和字母 T 开头,将Interval值的时间和日期部分分开。 例如ISO 8601替代形式可以写成5年4个月3天2小时1分1秒,如下图: P0005-04-03T02:01:01 PostgreSQL Interval输出格式 可以在SET intervalstyle命令的帮助下设置 PostgreSQL Interval值的Interval输出格式,如下面的示例所示: SET intervalstyle = 'iso_8601'; PostgreSQL 包含四种不同的输出格式,例如: iso_8601 postgres_verbose Postgres sql standard 注意:为了格式化Interval值,PostgreSQL 默认使用 Postgres 样式。 让我们看一个更好理解的例子: 以下命令用于以四种不同的输出格式显示5 年 4 个月 3 天 2 小时 1 分 1 秒: 对于 ISO_8601 输出格式 在下面的命令中,我们将上述Interval值的Interval**样式**设置为iso_8601: SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second'; 输出 执行上述命令后,我们会得到如下结果,它代表的是iso_8601区间输出格式: 对于 postgres_verbose 输出格式 在下面的命令中,我们将上述Interval值的Interval**样式**设置为postgres_verbose: SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 输出 执行上述命令后,我们将得到以下结果,其中显示了postgres_verboseInterval输出格式: 对于 Postgres 输出格式 在下面的命令中,我们将上述Interval值的Interval样式设置为Postgres: SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 输出 成功执行上述命令后,我们将得到以下结果,其中显示了PostgresInterval输出格式: 对于 Sql_standard 输出格式 在下面的命令中,我们将上述Interval值的Interval**样式**设置为sql_standard: SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 输出 成功执行上面的命令后我们会得到下面的结果,它代表了sql_standardInterval输出格式: 将 PostgreSQL Interval修改为字符串 我们可以使用TO_CHAR()函数将区间值修改为字符串。 将 PostgreSQL Interval修改为字符串的语法 TO_CHAR(interval,format) 的TO_CHAR()函数取第一个语句作为一个Interval值而另一个作为格式,并检索一个字符串,显示在所述特定格式的时间Interval。 在下面的示例中,我们将使用 TO_CHAR() 函数,它将 PostgreSQL Interval转换为字符串值: SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' ); 输出 成功执行上述命令后,我们将得到以下结果: PostgreSQL Interval相关的运算符和函数 区间运算符 我们可以使用下面的+、-、* 等算术运算符来获取区间值。 让我们看下面的例子,以便我们更好地理解: 在以下命令中,我们将在PostgreSQL 区间数据类型的帮助下使用算术运算符 (+): SELECT INTERVAL '1h 50m' + INTERVAL '5m'; 输出 执行上述命令,我们将得到以下结果,如下所示: 在以下命令中,我们将在PostgreSQL Interval数据类型的帮助下使用算术运算符 (-): SELECT INTERVAL '3h 50m' - INTERVAL '30m'; 执行上述命令后,我们将得到以下结果: 在以下命令中,我们将在PostgreSQL Interval数据类型的帮助下使用算术运算符 (*): SELECT 400 * INTERVAL '5 minute'; 输出 执行上述命令后,我们将得到以下结果: 从 PostgreSQL Interval中提取数据 我们可以使用EXTRACT()函数从区间值中提取字段,例如年、月、日等。 从 PostgreSQL Interval中提取数据的语法 EXTRACT(field FROM interval) 在上面的语法中,我们可以在 field 参数中使用年、月、日、小时、分钟等。 该提取物,如果我们想从时间Interval中提取函数返回类型为双精度值。 在以下示例中,我们将使用EXTRACT()函数来检索双精度值。 SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' ); 输出 成功执行上述命令后,我们将得到以下输出,其中显示双精度值的日期部分,如下所示: 调整 PostgreSQL Interval值 我们在PostgreSQL中有两个函数,justify_days 和 justify_hours,它允许我们修改24 小时视为一天的Interval和30 天视为一个月的Interval。 让我们看一个例子来了解我们如何调整 PostgreSQL Interval值: 在以下命令中,我们将使用justify_days 和 justify_hours 函数: SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours'); 输出 执行上面的命令后,我们会得到如下结果,将30 天的Interval显示为一个月,将24 小时的Interval显示为一天: 除此之外,justify_interval函数在justify_days 和 justify_hours的帮助下调节Interval值,并添加符号修改: 在以下示例中,我们将使用 justify_interval 函数和 SELECT 命令: SELECT justify_interval(interval '6 months -1 hour'); 输出 执行上述命令后,我们将得到以下输出: 概述 在PostgreSQL Interval数据类型部分,我们学习了以下主题: 在PostgreSQL的Interval数据类型用于存储和部署为期年,月,日,时,分,秒。 我们使用了不同的Interval函数,例如NOW()、TO_CHAR(),来增强特定表中的Interval值。 PostgreSQL Interval值具有输入和输出Interval格式。 我们可以借助justify_days()、justify_hours、justify_interval() 函数来调整 PostgreSQL Interval值。 我们可以使用EXTRACT()函数来提取区间字段值。 PostgreSQL timestamp PostgreSQL UUID