Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PostgreSQL中设置带日期和时间的两列之间的间隔?_Postgresql_Date_Dateinterval - Fatal编程技术网

如何在PostgreSQL中设置带日期和时间的两列之间的间隔?

如何在PostgreSQL中设置带日期和时间的两列之间的间隔?,postgresql,date,dateinterval,Postgresql,Date,Dateinterval,我想在两列之间设置一天或一小时的时间间隔来获取最新的实际记录,如果我没有设置,我在按天筛选时会得到过时的信息 表A:创建日期 表B:最后访问日期 所以我做了这个 SELECT * FROM acc_zone_person WHERE create_time::date = last_access_time::date 我每天得到的信息没有过时的信息,但在午夜23:00-00:00之间的所有信息 我想设置时间间隔,以便我的晚间信息从19:00一直显示到06:00数据 我曾经 SELECT

我想在两列之间设置一天或一小时的时间间隔来获取最新的实际记录,如果我没有设置,我在按天筛选时会得到过时的信息

表A:创建日期 表B:最后访问日期

所以我做了这个

SELECT  *
FROM acc_zone_person
WHERE create_time::date = last_access_time::date 
我每天得到的信息没有过时的信息,但在午夜23:00-00:00之间的所有信息 我想设置时间间隔,以便我的晚间信息从19:00一直显示到06:00数据

我曾经

SELECT  *
FROM acc_zone_person
WHERE last_access_time::date >= now() - interval '12 hours'
这次当我切换到较旧的日期时,我没有得到任何数据,只有12小时内的数据

所以我需要找到一种方法来做这样的事情

SELECT  *
FROM acc_zone_person
WHERE create_date::date >= last_access_time - interval '12 hours'

它应该将创建日期设置为现在,并获取上次访问时间的12小时间隔数据

我在这里有点困惑。为什么你不能使用你发布的最后一个查询?它不起作用吗?您只需要将上次更新时间转换为日期吗?

根据您自己的说法:“创建日期应与现在一样…”


是的,我尝试了这个查询,但我也从previeus日得到了较旧的记录(范围比我要求的36小时要大得多)。。。。因此,结果并非如此actual@ShohratPermanov我不认为这是一个优雅的解决方案,但我认为您可以将中间的两个查询与OR子句结合起来。这能解决问题吗<代码>从acc\u zone\u person中选择*(创建时间::日期=上次访问时间::日期)或(上次访问时间::日期>=现在()-间隔“12小时”)
SELECT  *
FROM acc_zone_person
WHERE now()::date >= last_access_time - interval '12 hours'