我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PostgreSQL的日期时间差DATEDIFF怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PostgreSQL的日期时间差DATEDIFF怎么使用

本文小编为大家详细介绍“PostgreSQL的日期时间差DATEDIFF怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PostgreSQL的日期时间差DATEDIFF怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    PostgreSQL-DATEDIFF-日期时间差,以秒,天,月,周等为单位

    您可以使用各种日期时间表达式或用户定义的 DATEDIFF 函数(UDF)在 PostgreSQL 中计算两个日期时间值之间的差,以秒,分钟,小时,天,周,月和年为单位。

    总览

    PostgreSQL 不提供类似于 SQL Server DATEDIFF 的[2] DATEDIFF 函数,但是您可以使用各种表达式或 UDF 来获得相同的结果。


    SQL Server
    and Sybase
    PostgreSQL
    YearsDATEDIFF(yy, start, end)DATE_PART('year', end) - DATE_PART('year', start)
    MonthsDATEDIFF(mm, start, end)years_diff * 12 + (DATE_PART('month', end) - DATE_PART('month', start))
    DaysDATEDIFF(dd, start, end)DATE_PART('day', end - start)
    WeeksDATEDIFF(wk, start, end)TRUNC(DATE_PART('day', end - start)/7)
    HoursDATEDIFF(hh, start, end)days_diff * 24 + DATE_PART('hour', end - start )
    MinutesDATEDIFF(mi, start, end)hours_diff * 60 + DATE_PART('minute', end - start )
    SecondsDATEDIFF(ss, start, end)minutes_diff * 60 + DATE_PART('minute', end - start )

    PostgreSQL-年中的日期差异

    考虑使用 SQL Server 函数来计算以年为单位的两个日期之间的差:

    SQL Server

      -- Difference between Oct 02, 2011 and Jan 01, 2012 in years  SELECT DATEDIFF(year, '2011-10-02', '2012-01-01');  -- Result: 1

    请注意,SQL Server DATEDIFF 函数返回 1 年,尽管日期之间只有 3 个月。

    SQL Server 不计算日期之间经过的整年,它仅计算年份之间的差异。

    在 PostgreSQL 中,您可以从日期中获取年份部分并将其减去。

    PostgreSQL

     -- Difference between Oct 02, 2011 and Jan 01, 2012 in years  SELECT DATE_PART('year', '2012-01-01'::date) - DATE_PART('year', '2011-10-02'::date);  -- Result: 1

    PostgreSQL-月中的日期差异

    考虑使用 SQL Server 函数来计算两个日期(以月为单位)之间的差额:

    SQL Server

      -- Difference between Oct 02, 2011 and Jan 01, 2012 in months  SELECT DATEDIFF(month, '2011-10-02', '2012-01-01');  -- Result: 3

    在 PostgreSQL 中,您可以将年份之间的差值乘以 12,然后将月份部分之间的差值相加(可以为负)。

    PostgreSQL

    -- Difference between Oct 02, 2011 and Jan 01, 2012 in months  SELECT (DATE_PART('year', '2012-01-01'::date) - DATE_PART('year', '2011-10-02'::date)) * 12 +              (DATE_PART('month', '2012-01-01'::date) - DATE_PART('month', '2011-10-02'::date));  -- Result: 3

    PostgreSQL-日期的天数差异

    考虑使用 SQL Server 函数来计算两天之间的日期差:

    SQL Server

     -- Difference between Dec 29, 2011 23:00 and Dec 31, 2011 01:00 in days  SELECT DATEDIFF(day, '2011-12-29 23:00:00', '2011-12-31 01:00:00');  -- Result: 2

    请注意,DATEDIFF 返回了 2 天,尽管 datetime 值之间只有 1 天 2 小时。

    在 PostgreSQL 中,如果您从另一个中减去一个日期时间值(TIMESTAMP,DATE 或 TIME 数据类型),则将获得一个 INTERVAL 值,格式为“ ddd days hh:mi:ss ”。

       SELECT '2011-12-31 01:00:00'::timestamp - '2011-12-29 23:00:00'::timestamp;    -- Result: "1 day 02:00:00"     SELECT '2011-12-31 01:00:00'::timestamp - '2010-09-17 23:00:00'::timestamp;    -- Result: "469 days 02:00:00"

    所以,你可以使用 date_part 数函数 extact 的天数,但它返回的数量充分的日期之间的天数。

    PostgreSQL

     -- Difference between Dec 29, 2011 23:00 and Dec 31, 2011 01:00 in days  SELECT DATE_PART('day', '2011-12-31 01:00:00'::timestamp - '2011-12-29 23:00:00'::timestamp);  -- Result: 1

    PostgreSQL-周中的日期差异

    考虑使用 SQL Server 函数来计算两周中两个日期之间的差额:

    SQL Server

    -- Difference between Dec 22, 2011 and Dec 31, 2011 in weeks  SELECT DATEDIFF(week, '2011-12-22', '2011-12-31');  -- Result: 1

    DATEDIFF 返回日期时间值之间的整周数。

    在 PostgreSQL 中,您可以使用表达式定义天数(请参见上文)并将其除以 7。需要 TRUNC 才能删除除后的小数部分。

    PostgreSQL

      -- Difference between Dec 22, 2011 and Dec 31, 2011 in weeks  SELECT TRUNC(DATE_PART('day', '2011-12-31'::timestamp - '2011-12-22'::timestamp)/7);  -- Result: 1

    PostgreSQL-日期时间的小时差异

    考虑使用 SQL Server 函数来计算两个 datetime 值之间的时差,以小时为单位:

    SQL Server

      -- Difference between Dec 30, 2011 08:55 and Dec 30, 2011 9:05 in weeks  SELECT DATEDIFF(hour, '2011-12-30 08:55', '2011-12-30 09:05');  -- Result: 1

    请注意,尽管 datetime 值之间只有 10 分钟的差异,但 DATEDIFF 返回了 1 小时。

    在 PostgreSQL 中,您可以使用表达式来定义天数(请参见上文),乘以 24 并乘以小时。

    PostgreSQL

     -- Difference between Dec 30, 2011 08:55 and Dec 30, 2011 9:05 in weeks  SELECT DATE_PART('day', '2011-12-30 08:55'::timestamp - '2011-12-30 09:05'::timestamp) * 24 +              DATE_PART('hour', '2011-12-30 08:55'::timestamp - '2011-12-30 09:05'::timestamp);  -- Result: 0

    请注意,此 PostreSQL 表达式返回在 datetime 值之间传递的完整小时数。

    PostgreSQL-分钟中的日期时间差异

    考虑使用 SQL Server 函数以分钟为单位计算两个日期时间值之间的差:

    SQL Server

      -- Difference between Dec 30, 2011 08:54:55 and  Dec 30, 2011 08:56:10 in minutes  SELECT DATEDIFF(minute, '2011-12-30 08:54:55', '2011-12-30 08:56:10');  -- Result: 2   -- Time only  SELECT DATEDIFF(minute, '08:54:55', '08:56:10');  -- Result: 2

    请注意,尽管 datetime 值之间只有 1 分 15 秒,但 DATEDIFF 返回了 2 分钟。

    在 PostgreSQL 中,您可以使用一个表达式来定义小时数(请参阅上文),乘以 60 并乘以分钟。

    PostgreSQL

    -- Difference between Dec 30, 2011 08:54:55 and  Dec 30, 2011 08:56:10 in minutes  SELECT (DATE_PART('day', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp) * 24 +               DATE_PART('hour', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp)) * 60 +               DATE_PART('minute', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp);  -- Result: 1   -- Time only  SELECT DATE_PART('hour', '08:56:10'::time - '08:54:55'::time) * 60 +              DATE_PART('minute', '08:56:10'::time - '08:54:55'::time);  -- Result: 1

    请注意,这些 PostreSQL 表达式返回在 datetime 值之间传递的完整分钟数。

    PostgreSQL-日期时间差(以秒为单位)

    考虑使用 SQL Server 函数以秒为单位计算两个日期时间值之间的差:

    SQL Server

      -- Difference between Dec 30, 2011 08:54:55 and  Dec 30, 2011 08:56:10 in seconds  SELECT DATEDIFF(second, '2011-12-30 08:54:55', '2011-12-30 08:56:10');  -- Result: 75   -- Time only  SELECT DATEDIFF(second, '08:54:55', '08:56:10');  -- Result: 75

    在 PostgreSQL 中,您可以使用表达式定义分钟数(请参见上文),乘以 60 并乘以秒。

    PostgreSQL

    -- Difference between Dec 30, 2011 08:54:55 and  Dec 30, 2011 08:56:10 in seconds  SELECT ((DATE_PART('day', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp) * 24 +                DATE_PART('hour', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp)) * 60 +                DATE_PART('minute', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp)) * 60 +                DATE_PART('second', '2011-12-30 08:56:10'::timestamp - '2011-12-30 08:54:55'::timestamp);  -- Result: 75   -- Time only  SELECT (DATE_PART('hour', '08:56:10'::time - '08:54:55'::time) * 60 +               DATE_PART('minute', '08:56:10'::time - '08:54:55'::time)) * 60 +               DATE_PART('second', '08:56:10'::time - '08:54:55'::time);  -- Result: 75

    PostgreSQL DATEDIFF-用户定义函数(UDF)

    除了使用单独的表达式来计算每个时间单位的日期时间差之外,还可以使用类似于 SQL Server DATEDIFF 函数的函数。

    PostgreSQL

    CREATE OR REPLACE FUNCTION DateDiff (units VARCHAR(30), start_t TIMESTAMP, end_t TIMESTAMP)     RETURNS INT AS $$   DECLARE     diff_interval INTERVAL;     diff INT = 0;     years_diff INT = 0;   BEGIN     IF units IN ('yy', 'yyyy', 'year', 'mm', 'm', 'month') THEN       years_diff = DATE_PART('year', end_t) - DATE_PART('year', start_t);        IF units IN ('yy', 'yyyy', 'year') THEN         -- SQL Server does not count full years passed (only difference between year parts)         RETURN years_diff;       ELSE         -- If end month is less than start month it will subtracted         RETURN years_diff * 12 + (DATE_PART('month', end_t) - DATE_PART('month', start_t));       END IF;     END IF;      -- Minus operator returns interval 'DDD days HH:MI:SS'     diff_interval = end_t - start_t;      diff = diff + DATE_PART('day', diff_interval);      IF units IN ('wk', 'ww', 'week') THEN       diff = diff/7;       RETURN diff;     END IF;      IF units IN ('dd', 'd', 'day') THEN       RETURN diff;     END IF;      diff = diff * 24 + DATE_PART('hour', diff_interval);      IF units IN ('hh', 'hour') THEN        RETURN diff;     END IF;      diff = diff * 60 + DATE_PART('minute', diff_interval);      IF units IN ('mi', 'n', 'minute') THEN        RETURN diff;     END IF;      diff = diff * 60 + DATE_PART('second', diff_interval);      RETURN diff;   END;   $$ LANGUAGE plpgsql;

    如何使用 PostgreSQL DATEDIFF 函数

    语法与 SQL Server DATEDIFF 相似,但是您必须在 PostgreSQL 中将时间单位(秒,分钟等及其缩写)指定为字符串文字,例如:

       -- Difference between Dec 30, 2011 08:54:55 and  Dec 30, 2011 08:56:10 in seconds  SELECT DATEDIFF('second', '2011-12-30 08:54:55'::timestamp, '2011-12-30 08:56:10'::timestamp);  -- Result: 75

    PostgreSQL DATEDIFF 函数仅适用于 TIME

    您可以具有另一个仅对时间数据类型起作用的函数。PostgreSQL 支持具有相同名称但参数数据类型不同的重载函数:

    CREATE OR REPLACE FUNCTION DateDiff (units VARCHAR(30), start_t TIME, end_t TIME)     RETURNS INT AS $$   DECLARE     diff_interval INTERVAL;     diff INT = 0;   BEGIN     -- Minus operator for TIME returns interval 'HH:MI:SS'     diff_interval = end_t - start_t;      diff = DATE_PART('hour', diff_interval);      IF units IN ('hh', 'hour') THEN       RETURN diff;     END IF;      diff = diff * 60 + DATE_PART('minute', diff_interval);      IF units IN ('mi', 'n', 'minute') THEN        RETURN diff;     END IF;      diff = diff * 60 + DATE_PART('second', diff_interval);      RETURN diff;   END;   $$ LANGUAGE plpgsql;

    登录后复制

    例如,可以将此函数调用为:

      -- Difference between 08:54:55 and 08:56:10 in seconds  SELECT DATEDIFF('second', '08:54:55'::time, '08:56:10'::time);  -- Result: 75

    读到这里,这篇“PostgreSQL的日期时间差DATEDIFF怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    PostgreSQL的日期时间差DATEDIFF怎么使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    PostgreSQL的日期时间差DATEDIFF怎么使用

    本文小编为大家详细介绍“PostgreSQL的日期时间差DATEDIFF怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PostgreSQL的日期时间差DATEDIFF怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
    2023-07-06

    PostgreSQL的日期时间差DATEDIFF实例详解

    目录总览PostgreSQL-年中的日期差异PostgreSQL-月中的日期差异PostgreSQL-日期的天数差异PostgreSQL-周中的日期差异PostgreSQL-日期时间的小时差异PostgreSQL-分钟中的日期时间差异Pos
    2023-04-13

    VB计算两个日期/时间之间的差(DateDiff函数)

    在VB中,可以使用`DateDiff`函数来计算两个日期/时间之间的差值。该函数的语法如下:```vbDateDiff(interval, date1, date2, [firstdayofweek], [firstweekofyear])
    2023-09-16

    PostgreSQL中的日期/时间函数怎么用

    这篇文章给大家分享的是有关PostgreSQL中的日期/时间函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、获取当前时间select now()select current_timestampsele
    2023-06-26

    MySQL DATEDIFF函数怎么获取两个日期的时间间隔

    要使用MySQL的DATEDIFF函数获取两个日期的时间间隔,可以按照以下步骤操作:使用DATEDIFF函数,其语法如下:DATEDIFF(date1, date2)其中date1和date2是要比较的日期。编写SQL查询语句,例如:SEL
    MySQL DATEDIFF函数怎么获取两个日期的时间间隔
    2024-04-09

    利用Java怎么实现计算两个日期的时间差

    本篇文章给大家分享的是有关利用Java怎么实现计算两个日期的时间差,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:/*** 获取两个日期相差的月数* @param d1
    2023-05-31

    PostgreSQL中怎么处理日期和时间数据

    在 PostgreSQL 中,日期和时间数据可以通过以下几种方式处理:存储日期和时间数据类型: PostgreSQL 提供了几种内建的日期和时间数据类型,包括 DATE、TIME、TIMESTAMP、TIMESTAMP WITH TIME
    PostgreSQL中怎么处理日期和时间数据
    2024-03-12

    PHP怎么获取两个日期间年月日和时分秒的差

    本篇内容主要讲解“PHP怎么获取两个日期间年月日和时分秒的差”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP怎么获取两个日期间年月日和时分秒的差”吧!首先老规矩,咱们直接创建一个PHP示例文
    2023-06-20

    Python中的日期时间模块怎么使用

    本篇内容主要讲解“Python中的日期时间模块怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的日期时间模块怎么使用”吧!Python 提供了 日期和时间模块用来处理日期和时
    2023-07-05

    怎么使用PHP操作日期和时间

    本文小编为大家详细介绍“怎么使用PHP操作日期和时间”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用PHP操作日期和时间”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、操作日期和时间 在 PHP 中,有
    2023-07-05

    PHP日期时间函数date()怎么使用

    PHP日期时间函数date()用于格式化一个本地的日期和时间,并返回格式化后的字符串。使用date()函数的基本语法如下:```date(format, timestamp)```其中,`format`参数是必需的,指定日期时间的格式。`t
    2023-08-09

    SQL Server中的日期时间函数怎么使用

    本篇内容主要讲解“SQL Server中的日期时间函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的日期时间函数怎么使用”吧!1、getdate():获取当前日期
    2023-06-30

    Java日期时间类Date、DateFormat、Calendar怎么使用

    这篇“Java日期时间类Date、DateFormat、Calendar怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
    2023-07-02

    如何使用 PHP 计算两个日期之间的差

    PHP 中有几种方法可以计算两个日期之间的差。本文将介绍如何使用<5.3 以下的 PHP 版本以及较新版本>5.3 的计算日期之间差异的方法。使用 strtotime() 计算 5.3 以下 PHP 版本的两个日期之间的差异strtotim
    如何使用 PHP 计算两个日期之间的差
    2024-02-27

    PHP中怎么运用日期时间

    PHP中怎么运用日期时间,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP日期时间运用大汇总:1、《PHP日期时间运用一:生日倒计时天数的简单实现》2、《PH
    2023-06-20

    利用java如何实现计算两个日期的时间差

    今天就跟大家聊聊有关利用java如何实现计算两个日期的时间差,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java计算两个日期中间的时间其中在数据库中有一个字段为datetime类型
    2023-05-31

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录