postgresql-日期函数
postgresql-日期函数
- 日期时间函数
- 计算时间间隔
- 获取时间中的信息
- 截断日期/时间
- 创建日期/时间
- 获取系统时间
- CURRENT_DATE
- 当前事务开始时间
- 时区转换
日期时间函数
PostgreSQL 提供了以下日期和时间运算的算术运算符。


计算时间间隔
age(timestamp, timestamp)函数用于计算两个时间点之间的间隔,age(timestamp)函数用于
计算当前日期的凌晨 12 点到该时间点之间的间隔
select age(timestamp '2020-12-31', timestamp '2020-01-01'), age(timestamp
'2020-01-01');

获取时间中的信息
date_part(text, timestamp)和 extract(field FROM timestamp)函数用于获取日期时间中的某
一部分,例如年份、月份、小时等;date_part(text, interval)和 extract(field FROM interval)函数用于获取时间间隔中的某一部分
select date_part('year', timestamp '2020-03-03 20:38:40'), extract(year from
timestamp '2020-03-03 20:38:40'),date_part('month', interval '1 years 5 months'), extract(month from
interval '1 years 5 months');

通过返回字段的标题可以看出,extract 函数实际上也是调用了 date_part 函数,只是参数方
式不同。这两个函数支持获取的信息包括:
• century,世纪;
• day,对于 timestamp,返回月份中的第几天;对于 interval,返回天数;
• decade,年份除以 10;
• dow,星期天(0)到星期六(6);
• doy,一年中的第几天,(1 - 365/366);
• epoch,对于 timestamp WITH time zone,返回 1970-01-01 00:00:00 UTC 到该时间的秒数;
对于 date 和 timestamp,返回本地时间的 1970-01-01 00:00:00 到该时间的秒数;对于
interval,返回以秒数表示的该时间间隔;
• hour,小时(1 - 23);
• isodow,ISO 8601 标准中的星期一(1)到星期天(7);
• isoyear,ISO 8601 标准定义的日期所在的年份。每年从包含 1 月 4 日的星期一开始,2017
年 01 月 01 日属于 2016 年;
• microseconds,微秒,包含秒和小数秒在内的数字乘以 1000000;
• millennium,千年;
• milliseconds,毫秒,包含秒和小数秒在内的数字乘以 1000;
• minute,分钟,(0 - 59);
• month,月份;
• quarter,季度,(1 - 4);
• second,秒数,包含小数秒;
• timezone,UTC 时区,单位为秒;
• timezone_hour,UTC 时区中的小时部分;
• timezone_minute,UTC 时区中的分钟部分;
• week,ISO 8601 标准中的星期几,每年从第一个星期四所在的一周开始;
• year,年份。
截断日期/时间
date_trunc(field, source [, time_zone ])函数用于将 timestamp、timestamp WITH time zone、 date、time 或者 interval 数据截断到指定的精度
select date_trunc('year', timestamp '2020-03-03 20:38:40'),date_trunc('day', timestamptz '2020-03-03 20:38:40+00',
'Asia/Shanghai'),date_trunc('hour', interval '2 days 3 hours 40 minutes');

date_trunc 函数支持以下截断精度:
microsecondsmillisecondssecondminutehourdayweekmonthquarteryeardecadecenturymillennium
创建日期/时间
make_date(year int, month int, day int)函数用于创建一个日期:
select make_date(2020, 03, 15);

make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)函数通过指定年、月、日等信息创建一个时间间隔
select make_interval(days => 1, hours => 5);

make_time(hour int, min int, sec double precision)函数通过指定小时、分钟和秒数创建一个
时间。

make_timestamp(year int, month int, day int, hour int, min int, sec double precision) 函数通过指定年、月、日、时、分、秒创建一个时间戳。

make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])函数通过指定年、月、日、时、分、秒创建一个带时区的时间戳。如果没有指
定时区,使用当前时区。
select make_timestamptz(2020, 3, 15, 8, 20, 23.5);

to_timestamp(double precision)函数将 Unix 时间戳(自从 1970-01-01 00:00:00+00 以来的秒
数)转换为 PostgreSQL 时间戳数据。
select to_timestamp(1583152349);

获取系统时间
PostgreSQL 提供了大量用于获取系统当前日期和时间的函数,例如 current_date、current_time、
current_timestamp、clock_timestamp()、localtimestamp、now()、statement_timestamp()等;同时还
支持延迟语句执行的 pg_sleep()等函数
参考文档
CURRENT_DATE
CURRENT_DATE 函数用于获取数据库服务器的当前日期:
select current_date;

调用该函数时不需要在函数名后加括号。该日期是服务器的日期,不是客户端的日期。
当前事务开始时间
以下函数可以用于获取数据库服务器的当前时间:
CURRENT_TIME
CURRENT_TIME(precision)
LOCALTIME
LOCALTIME(precision)CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(precision)
LOCALTIMESTAMP
LOCALTIMESTAMP(precision)
时区转换
AT TIME ZONE 运算符用于将 timestamp without time zone、timestamp WITH time zone 以及
time WITH time zone 转换为指定时区中的时间
SELECT timestamp '2020-03-03 20:38:40' at time zone 'Asia/Shanghai',timestamp with time zone '2020-03-03 20:38:40-05:00' at time zone
'Asia/Shanghai',time with time zone '20:38:40-05:00' at time zone 'Asia/Shanghai';

timezone(zone, timestamp)函数等价于 SQL 标准中的 timestamp AT TIME ZONE zone。
还有一些关于日期时间的函数,可以参考官方文档
相关文章:
postgresql-日期函数
postgresql-日期函数 日期时间函数计算时间间隔获取时间中的信息截断日期/时间创建日期/时间获取系统时间CURRENT_DATE当前事务开始时间 时区转换 日期时间函数 PostgreSQL 提供了以下日期和时间运算的算术运算符。 计算时间间隔 age(timestamp, timestamp)函数用于计算两…...
Android11去掉Setings里的投射菜单条目
Android11去掉【设置】--【已连接的设备】--【连接偏好设置】里的投射菜单条目,具体如下: commit 0c0583e6ddcdea21ec02db291d9a07d90f10aa59 Author: wzh <wzhincartech.com> Date: Wed Jul 21 16:37:13 2021 0800去掉投射菜单Change-Id: Id7f…...
fnm(Node.js 版本管理器)
fnm是什么? fnm是一款快速简单跨平台的 Node.js 版本管理器,使用 Rust 构建。 fnm怎么使用? 查看node 已安装列表 fnm list node 版本切换 fnm use 版本号 fnm use 16.0.0...
Apipost:为什么是开发者首选的API调试工具
文章目录 前言正文接口调试接口公共参数、环境全局参数的使用快速生成并导出接口文档研发协作接口压测和自动化测试结论 前言 Apipost是一款支持 RESTful API、SOAP API、GraphQL API等多种API类型,支持 HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外…...
Echarts图表坐标轴文字太长,省略显示,鼠标放上显示全部(vue)
注意:记得加上这个,触发事件, triggerEvent: true,重点:下面就是处理函数,在实例化图表的时候使用,传入参数是echarts的实例 // 渲染echartsfirstBarChart() {const that thislet columnar echarts.init…...
C语言控制语句——跳转关键字
循环和switch专属的跳转:break循环专属的跳转:continue无条件跳转:goto break 循环的break说明 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环 需求:一共吃5碗饭, 吃到第3碗吃饱了, 结束吃饭…...
C#,《小白学程序》第五课:队列(Queue)
日常生活中常见的排队,软件怎么体现呢? 排队的基本原则是:先到先得,先到先吃,先进先出 1 文本格式 /// <summary> /// 《小白学程序》第五课:队列(Queue) /// 日常生活中常见…...
【【萌新的STM32学习25--- USART寄存器的介绍】】
萌新的STM32学习25- USART寄存器的介绍 STM32–USART寄存器介绍(F1) 控制寄存器1 (CR1) 位13: 使能USART UE 0: USART分频器和输出被禁止 1: USART模块使能 位12 : 配置8个数据位…...
SpringBootWeb案例 Part 5
4. 配置文件 员工管理的增删改查功能我们已开发完成,但在我们所开发的程序中还一些小问题,下面我们就来分析一下当前案例中存在的问题以及如何优化解决。 4.1 参数配置化 在我们之前编写的程序中进行文件上传时,需要调用AliOSSUtils工具类&…...
【ES6】Promise.race的用法
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.race([p1, p2, p3]);上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值&#…...
PMP - 敏捷 3355
三个核心 产品负责人 负责最大化投资回报(ROI),通过确定产品特性,把他们翻译成一个有优先级的列表 为下一个 sprint 决定在这个列表中哪些应该优先级最高,并且不断调整优先级以及调整这个列表 职责是定义需求、定义…...
Mapbox-gl 关闭所有Popup,以及关闭按钮出现黑色边框bug
1.官方示例 var popup new mapboxgl.Popup().addTo(map);popup.remove(); 很明显,需要记录popup对象,管理起来比较麻烦。 2.本人采用div的方式关闭所有的popup,在map对象上新增加方法 map.closePopupmapView.popupClear function(){$(&q…...
RE:从零开始的车载Android HMI(四) - 收音机刻度尺
最近比较忙,研究复杂的东西需要大量集中的时间,但是又抽不出来,就写点简单的东西吧。车载应用开发中有一个几乎避不开的自定义View,就是收音机的刻度条。本篇文章我们来研究如何绘制一个收音机的刻度尺。 本系列文章的目的是在讲…...
评估安全 Wi-Fi 接入:Cisco ISE、Aruba、Portnox 和 Foxpass
在当今不断变化的数字环境中,对 Wi-Fi 网络进行强大访问控制的需求从未像现在这样重要。各组织一直在寻找能够为其用户提供无缝而安全的体验的解决方案。 在本博客中,我们将深入探讨保护 Wi-Fi(和有线)网络的四种领先解决方案——…...
java 泛型作为方法的返回值的封装
问题背景 业务需要,经常需要http方式调用某服务,然后某服务返回特定类型的返回内容。 类似 String resStr xxxHttpClient.post() ,然后它返回一个字符串,你还需要反序列化成某种格式的。 返回值可以反序列化成的形式如下&#…...
ASP.NET Core 中基于 Minimal APIs 的Web API
基于 Minimal APIs 的Web API Minimal APIs 是ASP.NET Core中快速构建 REST API 的方式,可以用最少的代码构建全功能的REST API。比如下面三行代码: var app WebApplication.Create(args); app.MapGet("/", () > "Hello World!&quo…...
Unity ProBuilder SetUVs 不起作用
ProBuilder SetUVs 不起作用 🐟 需要设置face.manulUV true public static void Set01UV(this ProBuilderMesh mesh){foreach (var face in mesh.faces){face.manualUV true;//设置为手动uv}var vertices mesh.GetVertices().Select(v > v.position).ToArray(…...
c#接口(interface)
概述: 在C#中,接口是一种定义了一组相关方法、属性和事件的规范。接口可以被类或结构体实现,以提供一种方式来定义类之间的契约或协议。 接口定义了一组成员,这些成员没有具体的实现。实现接口的类必须提供这些成员的具体实现。…...
SSH远程连接macOS服务器:通过cpolar内网穿透技术实现远程访问的设置方法
文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …...
【C++】Visual Studio EditorConfig 格式设置
【C】Visual Studio EditorConfig 格式设置 文章目录 【C】Visual Studio EditorConfig 格式设置I - EditorConfig1.1 - 通用设置indent_styleindent_sizetab_widthend_of_linecharsettrim_trailing_whitespaceinsert_final_newline II - Visual Studio 特定键值缩进设置cpp_in…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
