Postgresql数据类型-时间类型

PostgreSQL对时间、日期数据类型的支持丰富而灵活,本节介绍PostgreSQL支持的时间、日期类型,及其操作符和常用函数。

PostgreSQL支持的时间、日期类型如表所示。

我们通过一个简单的例子理解这几个时间、日期数据类型,先来看看系统自带的now()函数,now()函数显示当前时间,返回的类型为timestamp [ (p) ] with time zone,如下所示:

        mydb=> SELECT now();
                      now
        -------------------------------
          2017-07-29 09:44:25.493425+08
        (1 row)

 这里提前介绍下类型转换,本章最后一节将专门介绍数据类型转换的常用方法,以下SQL中的两个冒号是指类型转换,转换成timestamp without time zone格式如下,注意返回的数据变化:

        mydb=> SELECT now()::timestamp without time zone;
                      now
        ----------------------------
            2017-07-29 09:44:55.804403
        (1 row)

转换成date格式,如下所示:

        mydb=> SELECT now()::date;
            now
        ------------
          2017-07-29
        (1 row)

转换成time without time zone,如下所示:

        mydb=> SELECT now()::time without time zone;
            now
        -----------------
        09:45:49.390428
        (1 row)

interval指时间间隔,时间间隔单位可以是hour、day、month、year等,举例如下:

        mydb=> SELECT now(), now()+interval'1 day';
                          now               |           ? column?
        ----------------------------------+-------------------------------
          2017-07-29 09:47:26.026418+08 | 2017-07-30 09:47:26.026418+08
        (1 row)

通过以上几个示例读者应该对时间、日期数据类型有了初步的了解,值得一提的是时间类型中的(p)是指时间精度,具体指秒后面小数点保留的位数,如果没声明精度默认值为6,以下示例声明精度为0:

        mydb=> SELECT now(), now()::timestamp(0);
                          now               |         now
        ----------------------------------+---------------------
          2017-07-29 09:59:42.688445+08 | 2017-07-29 09:59:43
        (1 row)

时间、日期数据类型支持的操作符有加、减、乘、除,下面举例说明。日期相加,如下所示:

        mydb=> SELECT date '2017-07-29' +  interval'1 days';
                ?column?
        ---------------------
            2017-07-30 00:00:00
        (1 row)

日期相减,如下所示:

        mydb=> SELECT date '2017-07-29' -  interval'1 hour';
                ?column?
        ---------------------
            2017-07-28 23:00:00
        (1 row)

日期相乘,如下所示:

        mydb=> SELECT 100* interval '1 second';
            ?column?
        ----------
            00:01:40
        (1 row)

日期相除,如下所示:

        mydb=> SELECT interval '1 hour' / double precision '3';
            ?column?
        ----------
            00:20:00
        (1 row)

接下来演示时间、日期常用函数。显示当前时间,如下所示:

        mydb=> SELECT current_date, current_time;
            current_date |    current_time
        -----------------+--------------------
            2017-07-29   | 10:53:10.375374+08
        (1 row)

另一个非常重要的函数为EXTRACT函数,可以从日期、时间数据类型中抽取年、月、日、时、分、秒信息,语法如下所示:

        EXTRACT(field FROM source)

field值可以为century、year、month、day、hour、minute、second等,source类型为timestamp、time、interval的值的表达式,例如取年份,代码如下所示:

        mydb=> SELECT EXTRACT( year FROM now());
            date_part
        -----------
                2017
        (1 row)

对于timestamp类型,取月份和月份里的第几天,代码如下所示:

        mydb=> SELECT EXTRACT( month FROM now()), EXTRACT(day FROM now());
            date_part | date_part
        --------------+-----------
                    7 |        29
        (1 row)

取小时、分钟,如下所示:

        mydb=> SELECT EXTRACT( hour FROM now()), extract (minute FROM now());
            date_part | date_part
        --------------+-----------
                    11 |        14

取秒,如下所示:

        mydb=> SELECT EXTRACT( second FROM now());
            date_part
        -----------
            43.031366
        (1 row)

取当前日期所在年份中的第几周,如下所示:

        mydb=> SELECT EXTRACT( week FROM now());
            date_part
        -----------
                30
        (1 row)

当天属于当年的第几天,如下所示:

        mydb=> SELECT EXTRACT( doy FROM now());
            date_part
        -----------
                210
        (1 row)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决“找不到vcruntime140.dll,无法继续执行代码”错误的方法,以及解决步骤

给大家分享解决“找不到vcruntime140.dll,无法继续执行代码”错误的方法,以及解决步骤,来看看都有哪些可行性的办法解决“找不到vcruntime140.dll,无法继续执行代码”吧。 一.vcruntime140.dll的常见问题 vcruntime140.dll是Microsoft Visual Studio Re…

iis 部署 netcore 和vue 共用端口

常规情况下,vue 和api是分开的两个站点进行部署,若是要对外只有一个端口的话,采用以下梁总方式即可。 1.需要配置路由转发和代理开启(vue 使用hisoty模式) 参考链接.netCore vue(history模式&#xff0…

如何批量下载iconfont图标库

如何批量下载iconfont中svg图 原文链接: https://gitee.com/veigarchen/iconfont-download 1、下载插件到本地 2、将解压的文件添加到浏览器扩展中 3、按需下载自己的图标

华为Auth-Http Serve任意文件读取

1.漏洞描述 华为Auth-Http Server 1.0任意文件读取,攻击者可通过该漏洞读取任意文件。 2.网络资产查找 FOFA:server”Huawei Auth-Http Server 1.0” 2、部分界面如下 3、Poc /umweb/shadow 4、Poc批量验证 id: huanwei-auth-http-server-filereadi…

2023中国互联网公司排行榜!

日前,中国互联网协会正式发布《中国互联网企业综合实力指数(2023)》报告,同时还发布了2023年中国互联网综合实力前百家企业榜单、2023年中国互联网成长型前二十家企业和数据安全服务前五家企业名单。 总体来看,我国互…

苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你

环境: iPhone11 Apple ID 问题描述: 苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你 上次公司苹果设备,忘了激活锁的账户密码要向苹果申请解锁,打了很长电话,平时语音超套餐了,想着让他们…

Qt 4.8.6 的下载与安装

Qt 4.8.6 的下载与安装 Qt 4.8.6 的下载与安装下载并解压 MinGW 4.8.2Qt4.8.6 库的安装Qt Creator 3.3.0 的安装配置 Qt Creator测试 Qt 4.8.6 的下载与安装 学习《Qt Creator快速入门》(第3版),书里面要用 Qt:phonon,这个组件要…

yolov8模型训练、目标跟踪

一、准备条件 1.下载yolov8 https://github.com/ultralytics/ultralytics2.安装python https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe3.安装依赖 进入ultralytics-main,执行: pip install -r requirements.txt pip install -U ul…

【Git】git的安装与使用教程

【Git】git的安装与使用教程 1.简介1.1.什么是Git1.2.Git与SVN的区别 二、安装Git三、注册Gitee帐号四、使用Git进行上传与下载代码五、使用Git代码冲突六、Git常用命令 1.简介 1.1.什么是Git Git是一个分布式版本控制系统,用于跟踪和管理项目代码的变更。它可以记…

c++day6

#include <iostream>using namespace std; class Animal { public:virtual void peform() 0; }; class Monekey:public Animal { public:void peform(){cout << "猴子黑桃A" << endl;} }; class Elepthant:public Animal {void peform(){cout &l…

软文推广中如何搭建媒体矩阵

媒体矩阵简单理解就是在不同的媒体平台上&#xff0c;根据运营目标和需求&#xff0c;建立起全面系统的媒体布局&#xff0c;进行多平台同步运营。接下来媒介盒子就来和大家聊聊&#xff0c;企业在软文推广过程中为什么需要搭建媒体矩阵&#xff0c;又该如何搭建媒体矩阵。 一、…

LeetCode_多源 BFS_中等_2258.逃离火灾

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid &#xff0c;它表示一个网格图。每个格子为下面 3 个值之一&#xff1a; 0 表示草地。1 表示着火的格子。2 表示一座墙&#xff0c;你跟火都不能通过…

能源监测管理系统有哪些作用与效果?

随着全球能源的不断增加&#xff0c;能源的有限性与环境问题日益严重&#xff0c;用能管理企业需要一种高效的方法来管理能源与利用能源&#xff0c;因此能源监测管理系统成为了一种不可或缺的工具。 能源监测管理系统的重要性 1、实现节能减排的目标 通过系统&#xff0c;可…

Visual Studio2022安装教程【图文详解】(大一小白)编译软件

工欲善其事&#xff0c;必先利其器。想要学好编程&#xff0c;首先要把手中的工具利用好&#xff0c;今天小编教一下大家如何下载安装并使用史上最强大的编译器--Visual Studio&#x1f357; 一.Visual Studio下载及安装 https://visualstudio.microsoft.com/ 打开文件 点击.ex…

【计算机网络笔记】网络层服务模型——数据报网络

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

STM32-EXTI中断

EXTI简介 EXTI&#xff08;Extern Interrupt&#xff09;外部中断 EXTI可以监测指定GPIO口的电平信号&#xff0c;当其指定的GPIO口产生电平变化时&#xff0c;EXTI将立即向NVIC发出中断申请&#xff0c;经过NVIC裁决后即可中断CPU主程序&#xff0c;使CPU执行EXTI对应的中断程…

算法进阶指南图论 最优贸易

最优贸易 题目描述 C C C 国有 n n n 个大城市和 m m m 条道路&#xff0c;每条道路连接这 n n n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m m m 条道路中有一部分为单向通行的道路&#xff0c;一部分为双向通行的道路&#xff0c;双向通行的…

如何卸载在linux下通过rpm安装的mysql

目录 1.先关闭MySQL服务并查看运行状态 2.使用 rpm 管道命令的方式查看已安装的mysql 3. 使用rpm -ev 命令移除安装 4. 删除MySQL数据库内容 1.先关闭MySQL服务并查看运行状态 如果之前安装过并已经启动&#xff0c;则需要卸载前请先关闭MySQL服务 systemctl stop mysqld…

图论09-桥和割点

文章目录 1 寻找桥的算法2 桥的代码实现3 寻找割点的算法4 割点的代码实现 1 寻找桥的算法 2 桥的代码实现 package Chapt06_Bridge;import java.util.ArrayList;public class FindBridges {private Graph G;private boolean[] visited;//ord数组记录访问的顺序private int or…

vue使用websocket与springboot通信

WebSocket是HTML5下一种新的协议&#xff0c;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中&#xff0c;都要用到websocket&#xff0c;使得前端页面与后端页进行实时通信&#xff0c;例如&#xff0c;实时查询…