Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
当前日期和前一周之间的SQL查询_Sql_Postgresql - Fatal编程技术网

当前日期和前一周之间的SQL查询

当前日期和前一周之间的SQL查询,sql,postgresql,Sql,Postgresql,这是我当前的sql查询,它只是简单地读取CPU%和作业所有者,但如果是在当前日期(比如14天(2周)之前)之间,我很难合并上面的总和 在sge\u作业使用情况表中,两者都属于: ju\u开始时间,ju\u结束时间 有谁能帮我检查一下它是否在当前日期(14天前)之间,然后检查end\u timedate,看它是否还在运行 在下面输出我需要的答案: SELECT sge_job.j_owner AS "Owner" ,SUM(sge_job_usage.ju_cpu) AS "CPU T

这是我当前的sql查询,它只是简单地读取CPU%和作业所有者,但如果是在当前日期(比如14天(2周)之前)之间,我很难合并上面的总和

sge\u作业使用情况
表中,两者都属于:

ju\u开始时间
ju\u结束时间

有谁能帮我检查一下它是否在当前日期(14天前)之间,然后检查
end\u time
date,看它是否还在运行

在下面输出我需要的答案:

SELECT sge_job.j_owner AS "Owner"
      ,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage, sge_job 
GROUP BY j_owner;

目前还不清楚您是否需要与ju end_日期相同的条件,但结构应为:

SELECT sge_job.j_owner AS "Owner"       
,SUM(sge_job_usage.ju_cpu) AS "CPU Total" 
FROM sge_job_usage, sge_job  
WHERE ju_start_time BETWEEN LOCALTIMESTAMP - INTERVAL '1 week' AND LOCALTIMESTAMP 
GROUP BY j_owner;
WHERE ( ju_start_time, ju_end_time ) 
      OVERLAPS 
      ( CURRENT_DATE - INTERVAL '14 days', CURRENT_DATE )

ADC语法对PostgreSQL无效

我不明白你想把哪一个条件应用到ju_end_date上。但它应该类似于ju_开始时间

...
WHERE ju_start_time BETWEEN getdate() and DateAdd(d,-14, getdate())
我没有一个测试环境,所以我不能测试这个,但我认为它应该可以工作

有关主题的更多信息,请查看


编辑:如前所述,两个表需要一个连接条件。

我假设这两列是
DATE
类型。那么你需要这样的东西:

SELECT sge_job.j_owner AS "Owner"
      ,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage, sge_job 
WHERE sge_job_usage.C1 = sge_job.C2
  AND ju_start_time BETWEEN LOCALTIMESTAMP - INTERVAL '14 days' AND LOCALTIMESTAMP
GROUP BY j_owner;
或者这(取决于您要检查的具体情况:

WHERE ju_start_time BETWEEN CURRENT_DATE - INTERVAL '14 days'
                        AND CURRENT_DATE
  AND ju_end_time >= CURRENT_DATE
但查询使用了2个表,并且没有连接条件。它应该是:

SELECT sge_job.j_owner AS "Owner"       
,SUM(sge_job_usage.ju_cpu) AS "CPU Total" 
FROM sge_job_usage, sge_job  
WHERE ju_start_time BETWEEN LOCALTIMESTAMP - INTERVAL '1 week' AND LOCALTIMESTAMP 
GROUP BY j_owner;
WHERE ( ju_start_time, ju_end_time ) 
      OVERLAPS 
      ( CURRENT_DATE - INTERVAL '14 days', CURRENT_DATE )

当我现在尝试运行查询时,函数getdate()表示不存在?选择sge_job.j_owner作为“owner”,sge_job_usage.ju_start_time,SUM(sge_job_usage.ju_cpu)作为sge_job_usage中的“cpu总计”,sge_job在getdate()和DateAdd(d,-14,getdate()之间的开始时间)组由j_owner;我很抱歉!!我没有看到postgre标记:我的代码是用于tsql/sqlserver!!这可能会有帮助:啊,进度,它现在显示了一个输出,但它什么都没有,我已经更改了-integer“say 300”,在我数据库中的信息范围内,但除了表标题之外,查询中没有输出任何内容,你有什么想法吗可能会发生什么?如果可能的话,ju_start_time设置为没有时区的时间戳?我已经编辑了答案。您应该阅读我发布的链接,它包含有助于解决您的问题的有价值的信息。它应该在LOCALTIMESTAMP-INTERVAL“14天”和LOCALTIMESTAMP之间
,以显示任何结果。谢谢对于你们两个的输入,现在已经得到了显示所需结果的结果,答案显示在我的原始问题下now@ypercube,其目的是选择开始时间或结束时间,以使其从当前日期返回一定数量的天数,并查看其是否处于活动状态,只需更改天数并手动计算出现的时间这两列的数据类型是什么?日期,时间,时间戳?