当前位置: 首页 > news >正文

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 函数支持以下截断精度:

  • microseconds
  • milliseconds
  • second
  • minute
  • hour
  • day
  • week
  • month
  • quarter
  • year
  • decade
  • century
  • millennium

创建日期/时间

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。

还有一些关于日期时间的函数,可以参考官方文档

http://www.lryc.cn/news/147943.html

相关文章:

  • Android11去掉Setings里的投射菜单条目
  • fnm(Node.js 版本管理器)
  • Apipost:为什么是开发者首选的API调试工具
  • Echarts图表坐标轴文字太长,省略显示,鼠标放上显示全部(vue)
  • C语言控制语句——跳转关键字
  • C#,《小白学程序》第五课:队列(Queue)
  • 【【萌新的STM32学习25--- USART寄存器的介绍】】
  • SpringBootWeb案例 Part 5
  • 【ES6】Promise.race的用法
  • PMP - 敏捷 3355
  • Mapbox-gl 关闭所有Popup,以及关闭按钮出现黑色边框bug
  • RE:从零开始的车载Android HMI(四) - 收音机刻度尺
  • 评估安全 Wi-Fi 接入:Cisco ISE、Aruba、Portnox 和 Foxpass
  • java 泛型作为方法的返回值的封装
  • ASP.NET Core 中基于 Minimal APIs 的Web API
  • Unity ProBuilder SetUVs 不起作用
  • c#接口(interface)
  • SSH远程连接macOS服务器:通过cpolar内网穿透技术实现远程访问的设置方法
  • 【C++】Visual Studio EditorConfig 格式设置
  • 服务器单机大规模数据存储方案
  • ElasticSearch-集成ik分词器
  • c++版opencv求二值图的质心
  • 6、深入解析Kotlin类与对象:构造、伴生、单例全面剖析
  • 【开源ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduino
  • openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读
  • cs231n_1_IntroToConv
  • OPENCV实现SURF特征检测
  • Android Gradle 同步优化
  • BeautifulSoup:学习使用BeautifulSoup库进行HTML解析和数据提取。
  • 基于沙猫群算法优化的BP神经网络(预测应用) - 附代码