千家信息网

PostgreSQL中如何使用日期类型

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,PostgreSQL中如何使用日期类型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。当前时间/日期/时间戳获取当前时间的
千家信息网最后更新 2025年01月19日PostgreSQL中如何使用日期类型

PostgreSQL中如何使用日期类型,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。


当前时间/日期/时间戳

获取当前时间的方式有很多种,在这之前我们需要知道以下两种类型的区别:

  • 总是返回当前的值 (clock_timestamp())

  • 总是返回当前值,但在事务中它返回的是事务开始的时间(now())

让我们看下面这个例子

postgres=# BEGIN;postgres=# SELECT now();       now------------------------------- 2013-08-26 12:17:43.182331+02 postgres=# SELECT now();       now------------------------------- 2013-08-26 12:17:43.182331+02 postgres=# SELECT clock_timestamp();    clock_timestamp------------------------------- 2013-08-26 12:17:50.698413+02 postgres=# SELECT clock_timestamp();    clock_timestamp------------------------------- 2013-08-26 12:17:51.123905+02

你会发现,语句执行时候clock_timestamp()的返回值每次都发生了改变,但是now()总是返回相同的值。当你需要考虑时区时,你应该特别注意这两个函数差异。

时间区间:比如3天前

使用interval操作符你可以轻松的构建一个时间区间,例如

  • interval '1 day'

  • interval '5 days'

  • interval '5 days' + interval '3 hours'

  • interval '5 days 3 hours'

你可以看到,我们可以用interval操作符来简单的进行数学运算,这特别适合于构建例如3天前这样的时间区间,比如:

postgres=# SELECT now() - interval '3 days';      ?column?------------------------------- 2013-08-23 12:23:40.069717+02

获取星期几

有些时候对于一个给定的时间,你仅仅只想知道的是这天是星期几或者是它属于那个世纪的更或者你只想知道它是一年中的第几天。PostgreSQL中的extract()函数提供了这种功能。

如下例子是在8月26日 星期一进行测试的。

postgres=# SELECT extract(DAY FROM now()); date_part-----------    26 postgres=# SELECT extract(DOW FROM now()); date_part-----------     1

extract()还有其他更强大的功能,详情请参阅官方文档,在这里只列举了一小部分:

  • day

  • century

  • dow(day of week)

  • doy(day of year)

  • minute

  • month

  • year


时区转换

有些时候,时区转换对于特定时间在不同时区显示特别有用。AT TIME ZONE提供了这种功能,它是如何做到的?我们将在一个事务中进行演示,因为同一事务中now()函数总是返回相同的值,从而我们可以很容易看到同一时间在不同时区显示的差别。

postgres=# BEGIN;BEGINpostgres=# SELECT now();       now------------------------------- 2013-08-26 12:39:39.122218+02 postgres=# SELECT now() AT TIME ZONE 'GMT';     timezone---------------------------- 2013-08-26 10:39:39.122218 postgres=# SELECT now() AT TIME ZONE 'GMT+1';     timezone---------------------------- 2013-08-26 09:39:39.122218 postgres=# SELECT now() AT TIME ZONE 'PST';     timezone---------------------------- 2013-08-26 02:39:39.122218

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

时间 时区 事务 函数 功能 区间 时候 星期 日期 类型 不同 相同 例子 操作符 帮助 强大 清楚 世纪 两个 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京超乐软件开发有限公司 南京应用软件开发公司如何选择 连云港代驾软件开发公司 服务器检测失败怎么回事 我身边的网络安全2000字作文 服务器限制上传文件大小 公益诉讼和网络安全知识 如何更新数据库一个表的字段 网络安全纸质密码 网络服务器数据为什么会断 xp系统数据库服务器怎么填 美国博士毕业软件开发 mc国际服知名服务器 谷歌软件开发问题 互联网比赛属于科技文化活动吗 肥西网络技术咨询服务电话 徐州网络营销软件开发资费 微信支付软件开发避税 密云区品牌网络技术推广好处 数据库的自增 网络安全渗透设计方案 玖捌柒网络技术有限公司 数据库巡检报告模板 服务器检测失败怎么回事 互联网 科技 问题 ar软件开发一个要多少钱 网络安全的好坏 网络安全专业算什么工科吗 国家计算机等级网络安全 闵行区会计软件开发收费标准
0