admin 管理员组

文章数量: 1086019


2024年3月11日发(作者:centervertical)

date_trunc函数用法

date_trunc函数是PostgreSQL数据库中的一个常用函数,用

于对日期时间值或者包含日期时间值类型的表达式进行计算,以得

到更精细的时间粒度,最多可获得到毫秒级别的精度。它可以帮助

用户快速地进行日期时间的精确计算,简化查询、定位和返回日期

中的特定部分的计算,省去自定义日期格式的麻烦,极大地提高了

用户操作效率。

date_trunc函数的通用语法如下:

date_trunc({日期/时间字段} , [fields])

其中{日期/时间字段}表示要截取的日期时间值或者包含日期时

间值类型的表达式,[fields]表示要截取的粒度,根据具体情况而

定,可以是century、year、day、month、hour、minute、

second、millisecond、microsecond等等,不同的[fields]值对应

不同的日期时间精度,从最大的century到最小的microsecond,

共9个粒度。

使用date_trunc函数的最简单的实例如下:

SELECT date_trunc(day 2020-09-20 14:15:32

结果为:2020-09-20 00:00:00

这里我们使用date_trunc函数将精度从秒级降为天级,即将

“2020-09-20 14:15:32”截取为“2020-09-20 00:00:00”。

除了最简单的截取以外,date_trunc函数还可以用于一些更加

精细的计算,比如截取指定日期字段中的每个月的1号,截取指定

- 1 -

日期字段中每周的星期一,以及其他时间粒度的计算:

1.取每月1号:

SELECT date_trunc(month 2020-09-20 14:15:32

结果为:2020-09-01 00:00:00

2.取每周星期一:

SELECT date_trunc(week 2020-09-20 14:15:32

结果为:2020-09-14 00:00:00

另外,date_trunc函数还可以结合其他函数,实现更复杂的计

算。比如计算当前月的最后一天:

SELECT date_trunc(monthnow()) + INTERVAL 1 month -

INTERVAL 1 day

结果为:2020-09-30 00:00:00

总结,date_trunc函数是PostgreSQL数据库中非常实用的函

数,可以用来解决一些复杂的日期时间计算问题,用户可以根据自

身的需求,灵活利用它实现日期时间更精细的截取、微调和比较,

从而提高查询效率。

- 2 -


本文标签: 函数 时间 计算 截取 精度