我有一个
postgresql表,其中包含一个timestamp类型的列,没有时区.每行增加/减少1分钟,例如:
2015-07-28 01:35:00 2015-07-28 01:34:00 2015-07-28 01:33:00 ... ... 2015-07-27 23:59:00 2015-07-27 23:58:00 2015-07-27 23:57:00
我正在尝试编写一个查询,它将选择某个日期范围之间的所有行,但也会在这些日期的特定时间范围内选择,例如:选择08年期间2015-05-20到2015-06-20之间的所有行: 00:00至16:00:00
到目前为止我尝试的所有内容似乎都没有考虑日期时间要求.
解决方法
我不确定我是否理解正确,但是如果您想要指定日期的所有行,但是从时间部分超出08:00到16:00的那些日期排除行,则应执行以下操作:
select * from the_table where the_column::date between date '2015-05-20' and date '2015-06-20' and the_column::time between time '08:00::' and '16:00:00'
表达式the_column :: date称为强制转换,并将时间戳转换为删除时间信息的日期. the_column :: time提取timestamp列的时间部分.
Between运算符将包括边界(例如,时间精确地在16:00:00的行).如果您不想要,则需要将条件之间的条件更改为相应的>和<条件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。