PostgreSQL 知识量:10 - 51 - 182
在PostgreSQL中,日期和时间类型的分类如下:
1. 日期类型:
date: 表示日期,格式为YYYY-MM-DD。
timestamp without time zone: 表示日期和时间,格式为YYYY-MM-DD HH:MI:SS。与带有时区的timestamp不同,这种类型不包含时区信息。
timestamp with time zone: 表示日期和时间,格式为YYYY-MM-DD HH:MI:SS。与不带有时区的timestamp相比,这种类型包含了时区信息。
2. 时间间隔类型:
interval: 表示时间间隔,可以是年、月、日、小时、分钟和秒等。
3. 时间类型:
time without time zone: 表示时间,格式为HH:MI:SS。
time with time zone: 表示时间,格式为HH:MI:SS。与不带有时区的时间相比,这种类型包含了时区信息。
4. 其他相关类型:
timestamp without time zone: 这是一个旧的日期和时间类型,已被timestamp without time zone替代。
timestamp with time zone (deprecated): 这是一个旧的日期和时间类型,已被timestamp with time zone替代。
interval year to month: 表示年间隔。
interval day to second: 表示日间隔,包括天、小时、分钟和秒等。
在PostgreSQL中,日期和时间类型的输入格式取决于使用的类型。以下是常见的日期和时间类型的输入格式:
1. date:
输入格式:YYYY-MM-DD
示例:2023-10-23
2. timestamp without time zone:
输入格式:YYYY-MM-DD HH:MI:SS
示例:2023-10-23 14:30:00
3. timestamp with time zone:
输入格式:YYYY-MM-DD HH:MI:SS TZR
示例:2023-10-23 14:30:00+08
4. time without time zone:
输入格式:HH:MI:SS
示例:14:30:00
5. time with time zone:
输入格式:HH:MI:SS TZR
示例:14:30:00+08
6. interval:
输入格式:HH:MI:SS, HH:MI:SS + HH:MI:SS, ...
示例:1 hour 30 minutes, 5 days 12 hours 30 minutes
7. 其他日期和时间类型的输入格式:
还有其他一些旧的日期和时间类型,如timestamp without time zone和timestamp with time zone (deprecated),它们的输入格式与上述timestamp without time zone和timestamp with time zone类似。
注意:输入格式中的时间间隔(interval)表示时间间隔,而不是日期和时间之间的差异。时间间隔可以表示为小时、分钟、秒等,具体取决于需求。
在PostgreSQL中,日期和时间类型的输出格式可以通过使用to_char函数进行自定义。to_char函数用于将日期和时间值转换为指定的字符串格式。
以下是一些常用的日期和时间类型的输出格式示例:
日期类型 (date):to_char(date_column, 'YYYY-MM-DD')
时间类型 (time):to_char(time_column, 'HH24:MI:SS')
时间间隔类型 (interval):to_char(interval_column, 'HH24:MI:SS')
日期和时间类型 (timestamp without time zone):to_char(timestamp_column, 'YYYY-MM-DD HH24:MI:SS')
日期和时间类型 (timestamp with time zone):to_char(timestamp_column, 'YYYY-MM-DD HH24:MI:SS TZR')
其他格式选项:PostgreSQL还提供了许多其他格式选项,可以用于指定日期和时间的输出格式。例如,使用'YYYY'表示四位数的年份,'MM'表示两位数的月份,'DD'表示两位数的日期,等等。完整的格式选项列表可以在PostgreSQL的官方文档中找到。
注意:输出格式中的时区表示法(TZR)用于表示时区。例如,'+08'表示东八区。如果不需要时区信息,可以省略TZR部分。
通过使用to_char函数和适当的格式字符串,可以控制日期和时间类型在查询结果中的显示方式。这使得可以根据需求自定义输出格式,以适应不同的应用程序和报告需求。
PostgreSQL支持对时区的设置,并且可以通过查看和设置时区参数来管理时区。
在PostgreSQL中,默认时区是由timezone参数控制的。要查看当前的默认时区设置,可以使用以下命令:SHOWtimezone。如果还没有设置默认时区,默认时区通常是UTC(协调世界时)。
要更改默认时区,可以使用SET命令。例如,要将默认时区设置为上海时区(东八区),可以使用以下命令:SETtimezone='Asia/Shanghai'。此外,也可以使用ALTER DATABASE命令来更改特定数据库的默认时区。
设置数据库的默认时区也会影响到该数据库中的所有表和数据。如果只想更改特定表的时区设置,可以使用ALTER TABLE命令。例如,要将名为mytable的表的时区设置为上海时区,可以使用以下命令:ALTERTABLEmytableSETtimezone='Asia/Shanghai'。
此外,PostgreSQL中的时间戳数据类型有两种:时间戳(也称为不带时区的时间戳)和带时区的时间戳(或简称timestamptz)。带时区的时间戳存储为自2000-01-01 UTC 午夜以来的秒数,不存储时区信息。
在PostgreSQL中,日期和时间类型支持多种运算符,用于执行各种日期和时间相关的操作。以下是一些常用的日期和时间类型运算符:
1. 比较运算符:
=:等于
<> 或 !=:不等于
>:大于
<:小于
>=:大于或等于
<=:小于或等于这些比较运算符可用于比较日期、时间和时间间隔。
2. 算术运算符:
+:加法(用于时间间隔)
-:减法(用于时间间隔)
*:乘法(用于时间间隔)
/:除法(用于时间间隔)这些算术运算符可用于对日期、时间和时间间隔进行算术运算。
3. 组合运算符:
||:连接两个日期或时间值(通常用于日期和时间的组合)
4. 其他运算符:
interval:用于表示时间间隔,可以与算术运算符一起使用。例如,interval '1 day'表示一天的时间间隔。
以下是一些示例,展示了如何在PostgreSQL中使用日期和时间类型的运算符:
计算两个日期之间的天数差异:
SELECT '2023-01-01'::date - '2022-01-01'::date AS days_difference;
计算两个时间之间的分钟差异:
SELECT '14:30:00'::time - '13:30:00'::time AS minutes_difference;
计算两个时间间隔之间的总秒数:
SELECT (interval '2 hours' + interval '30 minutes') * 60 AS total_seconds;
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6