对postgresql日期和时间的比较

 更新时间:2025年01月30日 07:56:35   作者:安達と島村  
文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况进行适当的类型转换,以避免潜在的错误

postgresql日期和时间比较

DB里保存到时分秒,需要和年月日比较

select date_trunc('day',now())=date_trunc('day',date('20200615'))			--true
select date_trunc('day',date('20200611'))					--2020-06-11 00:00:00+00
select * from users where date_trunc('day',birthday)=date_trunc('day',date('20200401'))

db里存储date或者timestamp字段

需要和字符串比较时,建议先使用to_date或者to_timestamp转换。

测试发现pgsql往类型为timestamp的列插入字符串数据,或者用date/timestamp类型的数据跟字符串数据作比较时,会自动转换成对应的date/timestamp。

oracle未测试。

select to_date('2019-01-15 18:33:41','yyyy-MM-dd hh24:mi:ss');
select to_timestamp('2019-01-15 18:33:41','yyyy-MM-dd hh24:mi:ss');
select to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')= to_timestamp('2019-01-15 00:00:00','yyyy-MM-dd hh24:mi:ss');
>>true
select to_timestamp('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')- to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss');
>>"18:33:42"
select to_timestamp('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')='2019/01/15';
>>false

select to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')='2019/01/15';
>>true
select to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')='2019-01-15';
>>true
select to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')='20190115';
>>true
select to_date('2019-01-15 18:33:42','yyyy-MM-dd hh24:mi:ss')='2019/01-15';
>>ERROR:  date型の入力構文が不正です: "2019/01-15"


SELECT 
	time,
	to_timestamp('2011-12-13 14:15:16','yyyy-MM-dd hh24:mi:ss'),
	time=to_timestamp('2011-12-13 14:15:16','yyyy-MM-dd hh24:mi:ss'),
	time,to_date('2011-12-13 14:15:16','yyyy-MM-dd hh24:mi:ss'),
	time=to_date('2011-12-13 14:15:16','yyyy-MM-dd hh24:mi:ss')
FROM public.product where id =21;
>>"2011-12-13 14:15:16+09"
>>"2011-12-13 14:15:16+09"
>>true
>>"2011-12-13 14:15:16+09"
>>"2011-12-13"
>>false

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • postgresql安装及配置超详细教程

    postgresql安装及配置超详细教程

    这篇文章主要介绍了postgresql安装及配置超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • PostgreSQL 中 pg_stat_database 视图的 tup_returned 字段的含义详解

    PostgreSQL 中 pg_stat_database 视图的 tup_re

    PostgreSQL的pg_stat_database视图中的tup_returned字段统计了数据库中所有查询返回的行数,是数据库级别的累计值,它反映了数据库的负载和查询效率,本文介绍PostgreSQL中pg_stat_database视图的tup_returned字段的含义,感兴趣的朋友一起看看吧
    2025-12-12
  • PostgreSql 重建索引的操作

    PostgreSql 重建索引的操作

    这篇文章主要介绍了PostgreSql 重建索引的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL序列用法小结

    PostgreSQL序列用法小结

    PostgreSQL中序列Sequence是一个独立的数据库对象,专门用于生成唯一的递增整数,最常用于为表字段生成自增主键,下面详细解析序列的用法、核心函数以及实战中的避坑指南,感兴趣的可以了解一下
    2026-06-06
  • PostgreSQL BRIN 索引应用场景

    PostgreSQL BRIN 索引应用场景

    本文主要介绍了PostgreSQL BRIN 索引应用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • PostgreSQL通过mysql_fdw实现 MySQL 透明查询功能

    PostgreSQL通过mysql_fdw实现 MySQL 透明查询功能

    mysql_fdw是一个PostgreSQL的FDW扩展,由EnterpriseDB开发并开源,它通过MySQL客户端库连接远程 MySQL实例,并将远程表映射为PostgreSQL中的外部表本文配置mysql_fdw,实现PostgreSQL对MySQL表的透明读写访问,真正做到“一处查询,跨库联动”,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • shell脚本操作postgresql的方法

    shell脚本操作postgresql的方法

    PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等这篇文章主要介绍了shell脚本操作postgresql,需要的朋友可以参考下
    2022-12-12
  • Navicat连接postgresql时出现'datlastsysoid does not exist'报错问题完美解决

    Navicat连接postgresql时出现'datlastsysoid does not exist&

    这篇文章主要给大家介绍了关于Navicat连接postgresql时出现'datlastsysoid does not exist'报错问题的完美解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 如何将excel表格数据导入postgresql数据库

    如何将excel表格数据导入postgresql数据库

    这篇文章主要介绍了如何将excel表格数据导入postgresql数据库,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Cenots7 离线安装部署PostgreSQL 的详细过程

    Cenots7 离线安装部署PostgreSQL 的详细过程

    这篇文章主要介绍了Cenots7 离线安装部署PostgreSQL 的详细过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10

最新评论