每天选择特定时间范围的时间戳数据
Posted
技术标签:
【中文标题】每天选择特定时间范围的时间戳数据【英文标题】:Select timestamp data for specific time range each day 【发布时间】:2015-07-28 06:18:30 【问题描述】:我有一个带有 timestamp without timezone
类型列的 postgresql 表。每行增加/减少 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
我正在尝试编写一个查询,该查询将选择某个日期范围之间的所有行,但也包括那些日子的特定时间范围内的所有行,例如:选择 2015 年 5 月 20 日到 2015 年 6 月 20 日之间的所有行08:00:00 至 16:00:00。
到目前为止,我所做的一切似乎都没有考虑到日期和时间要求。
【问题讨论】:
【参考方案1】:我不确定我是否理解正确,但如果您想要指定日期的所有行,但排除时间部分在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:00' and '16:00:00'
表达式the_column::date
称为强制转换,会将timestamp
转换为date
,从而删除时间信息。 the_column::time
提取timestamp
列的时间部分。
between
运算符将包含边界(例如,时间正好在 16:00:00
的行)。如果您不希望这样,您需要将between
条件更改为相应的>
和<
条件。
【讨论】:
谢谢。我不知道如何施法,这就是我苦苦挣扎的原因。 跟进问题@a_horse_with_no_name .. 如果我想在当天获得16:00:00
和第二天之间的08:00:00
,怎么做?
between current_date + time '16:00' and (current_date + 1)::timestamp
看到这个关于使用between
wiki.postgresql.org/wiki/…
@Curtis:我没有使用带有时间戳的between
。我指出了使用它的缺点。以上是关于每天选择特定时间范围的时间戳数据的主要内容,如果未能解决你的问题,请参考以下文章
提取时间戳在特定范围内的 Python Pandas 记录[关闭]