PostgreSQL 设置时区,时间/日期函数汇总

news2024/12/23 18:00:37

文章目录

  • 前言
  • 查看时区
  • 修改时区
  • 时间/日期操作符和函数
    • 时间/日期操作符
    • 日期/时间函数:
    • extract,date_part函数支持的field
  • 数据类型格式化函数
    • 用于日期/时间格式化的模式:
  • 扩展


前言

本文基于 PostgreSQL 12.6 版本,不同版本的函数可能存在差异。

查看版本 psql --version


查看时区

show timezone; --UTC
select now(); -- 2023-07-24 09:22:48.589640 +00:00

视图 pg_timezone_names 保存了所有可供选择的时区

select * from pg_timezone_names;

查询 PRC 时区

select * from pg_timezone_names where name = 'PRC';

在这里插入图片描述

PRC是指中华人民共和国 PRC(People’s Republic of China)。

修改时区

修改时区,设置成东八区 北京时间 UTC+8,默认为session级配置

set time zone 'PRC';
select now(); -- 2023-07-24 17:21:05.086183 +08:00

修改时区,用户级配置

alter role rolname set timezone='UTC'; -- 修改指定角色时区(rolname为角色名)
alter role all set timezone='UTC';     -- 修改所有角色时区

修改时区,数据库级配置

alter database dbname set timezone='UTC'; -- dbname为数据库名称

时间/日期操作符和函数

时间/日期操作符

操作符例子返回类型结果
+select date ‘2023-07-24’ + integer ‘7’;date2023-07-31
+select date ‘2023-07-24’ + interval ‘1 hour’;timestamp2023-07-24 01:00:00.000000
+select date ‘2023-07-24’ + time ‘15:16’;timestamp2023-07-24 15:16:00.000000
+select interval ‘1 day’ + interval ‘1 hour’;interval0 years 0 mons 1 days 1 hours 0 mins 0.0 secs
+select timestamp ‘2023-07-24 15:16’ + interval ‘23 hours’;timestamp2023-07-25 14:16:00.000000
+select time ‘01:00’ + interval ‘3 hours’;time04:00:00
-select - interval ‘23 hours’;interval0 years 0 mons 0 days -23 hours 0 mins 0.0 secs
-select date ‘2023-07-24’ - date ‘2023-07-22’;integer2
-select date ‘2023-07-24’ - integer ‘7’;date2023-07-17
-select date ‘2023-07-24’ - interval ‘1 hour’;timestamp2023-07-23 23:00:00.000000
-select time ‘05:00’ - time ‘03:00’;interval0 years 0 mons 0 days 2 hours 0 mins 0.0 secs
-select time ‘05:00’ - interval ‘2 hours’;time03:00:00
-select timestamp ‘2023-07-24 23:00’ - interval ‘23 hours’;timestamp2023-07-24 00:00:00.000000
-select interval ‘1 day’ - interval ‘1 hour’;interval0 years 0 mons 1 days -1 hours 0 mins 0.0 secs
-select timestamp ‘2023-07-24 03:00’ - timestamp ‘2023-07-24 12:00’;interval0 years 0 mons 0 days -9 hours 0 mins 0.0 secs
*select interval ‘1 hour’ * double precision ‘3.5’;interval0 years 0 mons 0 days 3 hours 30 mins 0.0 secs
/select interval ‘1 hour’ / double precision ‘1.5’;interval0 years 0 mons 0 days 0 hours 40 mins 0.0 secs

日期/时间函数:

函数描述例子返回类型结果
age(timestamp, timestamp)第1个timestamp 减去 第2个timestampselect age(‘2023-07-24’, ‘1997-10-26’);interval25 years 8 mons 29 days 0 hours 0 mins 0.0 secs
age(timestamp)从current_date 减去 timestamp的值select age(timestamp ‘1997-10-26’);interval25 years 8 mons 29 days 0 hours 0 mins 0.0 secs
current_date今天的日期select current_date;date2023-07-24
current_time现在的时间select current_time;time07:53:43.911756 +00:00
current_timestamp日期和时间select current_timestamp;timestamp2023-07-24 07:54:19.495372 +00:00
date_part(text, timestamp)获取子域(等效于extract)select date_part(‘hour’, timestamp ‘2023-07-24 15:56:34’);double15
date_part(text, interval)获取子域(等效于extract)select date_part(‘month’, interval ‘2 years 3 months’);double3
date_trunc(text, timestamp)截断成指定的精度select date_trunc(‘hour’, timestamp ‘2023-07-24 15:56:34’);timestamp2023-07-24 15:00:00.000000
extract(field from timestamp)获取子域select extract(hour from timestamp ‘2023-07-24 15:56:34’);double15
extract(field from interval)获取子域select extract(month from interval ‘2 years 3 months’);double3
localtime当前时间select localtime;time08:00:08
localtimestamp当前日期和时间select localtimestamp;timestamp2023-07-24 08:05:03.650472
now()当前的日期和时间(等效于current_timestamp)select now();timestamp2023-07-24 08:09:30.828408 +00:00
timeofday()当前日期和时间select timeofday();textMon Jul 24 08:09:51.870484 2023 UTC

extract,date_part函数支持的field

extractdate_part 这两个函数可以从日期时间值中提取指定的部分,例如年份、月份、小时等。extract 是一个 PostgreSQL 特有的函数,而 date_part 在标准 SQL 中也有定义,但两者的功能类似。

描述例子结果
century世纪select extract(century from timestamp ‘2023-07-24 15:56:34’);21
day(月份)里的日期域(1-31)select extract(day from timestamp ‘2023-07-24 15:56:34’);24
decade年份域除以10select extract(decade from timestamp ‘2023-07-24 15:56:34’);202
dow每周的星期号(0-6;星期天是0) (仅用于timestamp)select extract(dow from timestamp ‘2023-07-24 15:56:34’);1
doy一年的第几天(1 -365/366) (仅用于 timestamp)select extract(doy from timestamp ‘2023-07-24 15:56:34’);205
epochUnix时间戳select extract(epoch from timestamp ‘2023-07-24 15:56:34’);1690214194
hour小时域(0-23)select extract(hour from timestamp ‘2023-07-24 15:56:34’);15
isodowISO 周几(1-7,其中1代表星期一)select extract(isodow from timestamp ‘2023-07-24 15:56:34’);1
isoyearISO 年份select extract(isoyear from timestamp ‘2023-07-24 15:56:34’);2023
millennium千年((年份/1000)+1)select extract(millennium from timestamp ‘2023-07-24 15:56:34’);3
microseconds微秒select extract(microseconds from TIME ‘15:56:34.5’);34500000
millisecond毫秒select extract(millisecon from TIME ‘15:56:34.5’);34500
minute分钟(0-59)select extract(minute from timestamp ‘2023-07-24 15:56:34’);56
month月份,对于timestamp数值,它是一年里的月份数(1-12);对于interval数值,它是月的数目,然后对12取模(0-11)select extract(month from timestamp ‘2023-07-24 15:56:34’);7
quarter季度,该天所在的该年的季度(1-4)(仅用于 timestamp)select extract(quarter from timestamp ‘2023-07-24 15:56:34’);3
second秒域,包括小数部分(0-59[1])select extract(second from timestamp ‘2023-07-24 15:56:34’);34
week该天在所在的年份里是第几周。select extract(week from timestamp ‘2023-07-24 15:56:34’);30
year年份域select extract(year from timestamp ‘2023-07-24 15:56:34’);2023

数据类型格式化函数

PostgreSQL格式化函数提供一套有效的工具用于把各种数据类型(日期/时间、integer、floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型。

to_char 函数第一个参数是待格式化的值,而第二个是定义输出或输出格式的模板。

函数描述例子返回类型结果
to_char(timestamp, text)把时间戳转换成字串select to_char(current_timestamp, ‘HH12:MI:SS’);text06:03:19
to_char(interval, text)把时间间隔转为字串select to_char(interval ‘14h 6m 20s’, ‘HH24:MI:SS’);text14:06:20
to_date(text, text)把字串转换成日期select to_date(‘25 Jul 2023’, ‘DD Mon YYYY’);date2023-07-24
to_timestamp(text, text)把字串转换成时间戳select to_timestamp(‘25 Jul 2023’, ‘DD Mon YYYY’);timestamp2023-07-24 00:00:00.000000 +00:00
to_timestamp(double)把UNIX纪元转换成时间戳select to_timestamp(1690179888);timestamp2023-07-24 06:24:48.000000 +00:00

用于日期/时间格式化的模式:

模式描述
HH一天的小时数(01-12)
HH12一天的小时数(01-12)
HH24一天的小时数(00-23)
MI分钟(00-59)
SS秒(00-59)
MS毫秒(000-999)
US微秒(000000-999999)
AM正午标识(大写)
Y,YYY带逗号的年(4和更多位)
YYYY年(4和更多位)
YYY年的后三位
YY年的后两位
Y年的最后一位
MONTH全长大写月份名(空白填充为9字符)
Month全长混合大小写月份名(空白填充为9字符)
month全长小写月份名(空白填充为9字符)
MON大写缩写月份名(3字符)
Mon缩写混合大小写月份名(3字符)
mon小写缩写月份名(3字符)
MM月份号(01-12)
DAY全长大写日期名(空白填充为9字符)
Day全长混合大小写日期名(空白填充为9字符)
day全长小写日期名(空白填充为9字符)
DY缩写大写日期名(3字符)
Dy缩写混合大小写日期名(3字符)
dy缩写小写日期名(3字符)
DDD一年里的日子(001-366)
DD一个月里的日子(01-31)
D一周里的日子(1-7;周日是1)
W一个月里的周数(1-5)(第一周从该月第一天开始)
WW一年里的周数(1-53)(第一周从该年的第一天开始)

示例:

-- 查询今天是今年的第几天
select to_char(now(), 'DDD'); -- 205

扩展

查询某个日期是否在某段日期范围,可以使用 >< 判断;如果使用了 between ,则前一个日期必须小于后一个日期。

示例:

-- between 错误用法
select date '2023-07-24' between date('2023-07-25') - 1 and date('2023-07-25') - 7; -- false

-- between 正确用法
select date '2023-07-24' between date('2023-07-25') - 7 and date('2023-07-25') - 1; -- true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/785965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人才公寓水电表改造解决方案

随着社会经济的不断发展&#xff0c;人才公寓作为吸引和留住人才的重要配套设施&#xff0c;其水电表改造问题越来越受到人们的关注。本文将从以下几个方面探讨人才公寓水电表改造解决方案。 一、现状分析 目前&#xff0c;人才公寓的水电表普遍存在以下几个问题&#xff1a; …

Jenkins从配置到实战(二) - Jenkins如何在多台机器上自动化构建

前言 jenkins除了支持在本机上进行项目构建&#xff0c;还可以将构建任务分发到其他远程服务器上去执行&#xff0c;可以实现在不同平台和架构的机器上来完成项目的自动化构建任务&#xff0c;也能减轻jenkins服务器的压力。本文章就主要介绍下此流程。 准备工作 准备两台机…

2.02 分类功能实现后台实现

三级分类效果图&#xff1a; 一 实现一级分类查询 步骤1&#xff1a;使用逆向工程生成创建实体类和对应的mapper 实体类&#xff1a;Categorymapper: CategoryMapper和CategoryMapper.xml步骤2&#xff1a; import com.one.pojo.Category; import java.util.List; public int…

视频讲解Codeforces Round 887 (Div. 2)(A--C)

文章目录 A. Desorting1、板书2、代码 B. Fibonaccharsis1、板书2、代码 C. Ntarsis Set1、板书2、代码 视频讲解Codeforces Round 887 (Div. 2)&#xff08;A–C&#xff09; A. Desorting 1、板书 2、代码 #include<bits/stdc.h> #define endl \n #define INF 0x3f…

Linux6.13 Docker LNMP项目搭建

文章目录 计算机系统5G云计算第四章 LINUX Docker LNMP项目搭建一、项目环境1.环境描述2.容器ip地址规划3.任务需求 二、部署过程1.部署构建 nginx 镜像2.部署构建 mysql 镜像3.部署构建 php 镜像4.验证测试 计算机系统 5G云计算 第四章 LINUX Docker LNMP项目搭建 一、项目…

功能测试也可以发现数据库相关的性能问题

很多同学认为功能测试和性能测试是严格分开的&#xff0c;功能测试人员无法发现性能问题。其实不是这样的&#xff0c;功能测试人员在验证功能时也可以发现性能问题&#xff1b;一些功能反而在功能测试环境不好验证&#xff0c;需要在性能环境上测试。 今天咱们就说一下测试涉及…

Spring Security 身份验证的基本类/架构

目录 1、SecurityContextHolder 核心类 2、SecurityContext 接口 3、Authentication 用户认证信息接口 4、GrantedAuthority 拥有权限接口 5、AuthenticationManager 身份认证管理器接口 6、ProviderManager 身份认证管理器的实现 7、AuthenticationProvider 特定类型的…

西北乱跑娃 -- CSS动态旋转果冻效果

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>旋转果冻</title> <style> #myDIV {margin: 250px;width: 250px;height: 250px;background: orange;position: relative;font-size: 20px;animation: anima…

【前缀和】LeetCode 560. 和为k的字数组

文章目录 题目描述方法1 暴力方法2 暴力优化方法3 前缀和方法4 前缀和优化 题目描述 力扣560题&#xff0c;链接&#xff1a;https://leetcode.cn/problems/subarray-sum-equals-k 方法1 暴力 暴力法&#xff0c;三重for循环&#xff0c;时间复杂度 O ( N 3 ) O(N^3) O(N3)&a…

[回馈]ASP.NET Core MVC开发实战之商城系统(二)

经过一段时间的准备&#xff0c;新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始&#xff0c;在之前的文章中&#xff0c;讲解了商城系统的整体功能设计&#xff0c;页面布局设计&#xff0c;环境搭建&#xff0c;系统配置&#xff0c;及首页商品类型&#xff0c;bann…

一百三十五、Azkaban——AzkabanWebServer服务开启后秒退

一、问题 Azkaban的AzkabanWebServer服务开启后秒退&#xff0c;造成Azkaban的页面登录不上 AzkabanWebServer服务开启后&#xff0c;第一个jps里面有AzkabanWebServer&#xff0c;随后第二个jps里面没有AzkabanWebServer 二、问题原因 MySQL中azkaban数据库的表executors的…

PDF转换成word乱码了怎么办?最实用的方法在这里!

在日常办公中&#xff0c;我们常常需要将PDF文件转换成Word文件&#xff0c;以便于编辑和修改。然而有时候在PDF转Word的过程中可能会遇到乱码的问题&#xff0c;让人感到困扰。在面对这种情况时&#xff0c;我们需要选择正确的方法&#xff0c;避免文件转换后出现乱码。下面我…

面积阵列封装技术-BGA CSP/Flip Chip

面积阵列封装有不同的类型&#xff0c;因此也就有着不 同的结构特点和组装方式。面积阵列封装以其结构 形 式 可 分 为 两 大 类 :BGA/CSP 和 倒 装 芯 片&#xff08;Flip Chip&#xff09;。 1 BGA技术 BGA 形式封装是 1980 年由富士通公司提出&#xff0c; 在日本 IBM 公司…

Excel处理数据的常用函数整理

1.常用函数 2.常见数学和三角函数 excel求逆矩阵的例子&#xff1a; 3.统计函数

图像滤波器

图像噪声 • 图像噪声是图像在获取或是传输过程中受到随机信号干扰&#xff0c;妨碍人们对图像理解及分析处理 的信号。 • 图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量&#xff0c;图像在传输过程中产 生图像噪声的主要因素是所用的传输信道受到了噪声…

mysql用is null查不生效的一种情况

今天发现了一个诡异的情况&#xff1a; 首先是在记录中可以明显看到 update_time有null记录。 但用一下sql查询&#xff1a; SELECT count(*) FROM risknoting WHERE noting_state未标注 and update_time is NULL得到结果却是0条。 但应该无论如何都要大于等于1条。 因此&am…

互联网医院系统|互联网医院软件开发|互联网医院搭建方案

随着互联网技术的发展&#xff0c;互联网医院系统逐渐成为医疗服务的新模式&#xff0c;为患者和医生提供了更加方便和高效的医疗体验。下面将介绍互联网医院系统的功能优势。   在线挂号和预约&#xff1a;互联网医院系统可以提供在线挂号和预约功能&#xff0c;患者可以通过…

Mysql关于进程中的死锁和解除锁

Mysql 经常会遇到语句或者存储过程长时间没有反应&#xff0c;大概率就是挂掉了&#xff0c;或者死锁了。 可通过如下几种方式来查看当前进程状态 1. 查询数据库所有的进程状态 SHOW PROCESSLIST SELECT * FROM information_schema.PROCESSLIST; 2. 查询在锁的事务 SELECT…

Unity TMP (TextMeshPro) 创建字体材质

1 TMP 简介 完整名称&#xff1a;Text Mesh Pro &#xff0c;unity新一代主流字体插件 1.1 组件变化 内置的Text组件以及与内置Text组件绑定的Button、DropDown、InputField均被替换为使用TextMeshPro的版本 内置的Text组件以及与内置Text组件绑定的Button、DropDown、Input…

Python基于PyTorch实现循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 LSTM网络是目前更加通用的循环神经网络结构&#xff0c;全称为Long Short-Term Memory&#xff0c;翻…