PostgreSQL的日期时间差DATEDIFF实例详解
发布日期:2025-01-04 11:12 点击次数:97
PostgreSQL-DATEDIFF-日期时间差,以秒,天,月,周等为单位 您可以使用各种日期时间表达式或用户定义的 DATEDIFF 函数(UDF)在 PostgreSQL 中计算两个日期时间值之间的差,以秒,分钟,小时,天,周,月和年为单位。 总览 PostgreSQL 不提供类似于 SQL Server DATEDIFF 的[2] DATEDIFF 函数,但是您可以使用各种表达式或 UDF 来获得相同的结果。 SQL Serverand SybasePostgreSQLYearsDATEDIFF(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: 请注意,SQL Server DATEDIFF 函数返回 1 年,尽管日期之间只有 3 个月。 SQL Server 不计算日期之间经过的整年,它仅计算年份之间的差异。 在 PostgreSQL 中,您可以从日期中获取年份部分并将其减去。 PostgreSQL: PostgreSQL-月中的日期差异 考虑使用 SQL Server 函数来计算两个日期(以月为单位)之间的差额: SQL Server: 在 PostgreSQL 中,您可以将年份之间的差值乘以 12,然后将月份部分之间的差值相加(可以为负)。 PostgreSQL: PostgreSQL-日期的天数差异 考虑使用 SQL Server 函数来计算两天之间的日期差: SQL Server: 请注意,DATEDIFF 返回了 2 天,尽管 datetime 值之间只有 1 天 2 小时。 在 PostgreSQL 中,如果您从另一个中减去一个日期时间值(TIMESTAMP,DATE 或 TIME 数据类型),则将获得一个 INTERVAL 值,格式为“ ddd days hh:mi:ss ”。 所以,你可以使用 date_part 数函数 extact 的天数,但它返回的数量充分的日期之间的天数。 PostgreSQL: PostgreSQL-周中的日期差异 考虑使用 SQL Server 函数来计算两周中两个日期之间的差额: SQL Server: DATEDIFF 返回日期时间值之间的整周数。 在 PostgreSQL 中,您可以使用表达式定义天数(请参见上文)并将其除以 7。需要 TRUNC 才能删除除后的小数部分。 PostgreSQL: PostgreSQL-日期时间的小时差异 考虑使用 SQL Server 函数来计算两个 datetime 值之间的时差,以小时为单位: SQL Server: 请注意,尽管 datetime 值之间只有 10 分钟的差异,但 DATEDIFF 返回了 1 小时。 在 PostgreSQL 中,您可以使用表达式来定义天数(请参见上文),乘以 24 并乘以小时。 PostgreSQL: 请注意,此 PostreSQL 表达式返回在 datetime 值之间传递的完整小时数。 PostgreSQL-分钟中的日期时间差异 考虑使用 SQL Server 函数以分钟为单位计算两个日期时间值之间的差: SQL Server: 请注意,尽管 datetime 值之间只有 1 分 15 秒,但 DATEDIFF 返回了 2 分钟。 在 PostgreSQL 中,您可以使用一个表达式来定义小时数(请参阅上文),乘以 60 并乘以分钟。 PostgreSQL: 请注意,这些 PostreSQL 表达式返回在 datetime 值之间传递的完整分钟数。 PostgreSQL-日期时间差(以秒为单位) 考虑使用 SQL Server 函数以秒为单位计算两个日期时间值之间的差: SQL Server: 在 PostgreSQL 中,您可以使用表达式定义分钟数(请参见上文),乘以 60 并乘以秒。 PostgreSQL: PostgreSQL DATEDIFF-用户定义函数(UDF) 除了使用单独的表达式来计算每个时间单位的日期时间差之外,还可以使用类似于 SQL Server DATEDIFF 函数的函数。 PostgreSQL: 如何使用 PostgreSQL DATEDIFF 函数 语法与 SQL Server DATEDIFF 相似,但是您必须在 PostgreSQL 中将时间单位(秒,分钟等及其缩写)指定为字符串文字,例如: PostgreSQL DATEDIFF 函数仅适用于 TIME 您可以具有另一个仅对时间数据类型起作用的函数。PostgreSQL 支持具有相同名称但参数数据类型不同的重载函数: 登录后复制 例如,可以将此函数调用为: 总结 到此这篇关于PostgreSQL日期时间差DATEDIFF的文章就介绍到这了,更多相关PostgreSQL日期时间差DATEDIFF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 您可能感兴趣的文章:postgresql 计算时间差的秒数、天数实例