日期到日期时间与脚本POSTGRESQL之间的小时数

时间:2017-02-07 11:42:52

标签: postgresql datetime

此代码只能捕获日期,我想捕获一天中的所有时间sol.datahorafim = 00:00:00dataInicial = 23:55:55。我该怎么做?

使用来自xml和函数的PARAM编辑。

XML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<PARAMETERS>
        <PARAM name='dataInicial' type='java.sql.Date' size='10' value='' description='citcorpore.comum.datainicio' fix='false' mandatory='true' reload='true' />
        <PARAM name='dataFinal' type='java.sql.Date' size='10'  value='' description='citcorpore.comum.datafim' fix='false' mandatory='true' default='{TODAY}'/>
         <PARAM name='contrato' type='java.lang.Integer' typeHTML='select' size='0'value='' description='Contrato' fix='false' mandatory='false' reload='true' onload='true'>
            <OPTION value='-1' text='Todos'/>       
            <OPTIONS type='SQL' onload='true'>
                 SELECT idcontrato, numero+' '+nomefantasia
                 FROM contratos ct, clientes cl
                 where cl.idcliente = ct.idcliente
                 order by 2
            </OPTIONS>
        </PARAM>
      <PARAM name='status' type='java.lang.Integer' typeHTML='select' size='0'value='' description='Status' fix='false' mandatory='false' reload='true' onload='true'>
            <OPTION value='-1' text='Todos'/>       
            <OPTION value='6' text='Fechada'/>
            <OPTION value='3' text='Cancelada'/>    
        </PARAM>
        <PARAM name='executor' type='java.lang.String' value='' typeHTML='text' size='10' description='Executor' fix='false' mandatory='false'/>
        <PARAM name='quantidade' type='java.lang.Integer' value='' typeHTML='text' size='10' description='Qtd Bases' fix='false' mandatory='false'/>
</PARAMETERS>   

功能:

montarSql = function() { 
 var sql = new importNames.StringBuilder();
 var parametroContrato = hashParametros.get("PARAM.contrato");
 var parametroExecutor = hashParametros.get("PARAM.executor");
 var parametroQuantidade = hashParametros.get("PARAM.quantidade");
 var parametroStatus = hashParametros.get("PARAM.status");

 sql.append("select idsolicitacaoservico,nomeservico,idstatus,qtd_conhecimentos, nome, grupo  ");
 sql.append("from ");
 sql.append("(select con.numero,ser.nomeservico,sol.idsolicitacaoservico, sol.idstatus,");
 sql.append("(select count(idBaseConhecimento) from conhecimentosolicitacaoservico where ");
 sql.append("idsolicitacaoservico = sol.idsolicitacaoservico) qtd_conhecimentos, usu.nome, gr.nome grupo ");
 sql.append("from solicitacaoservico sol INNER JOIN servicocontrato scn ON sol.idservicocontrato = scn.idservicocontrato ");
 sql.append("JOIN servico ser ON scn.idservico = ser.idservico ");
 sql.append("JOIN contratos con ON scn.idcontrato = con.idcontrato ");
 sql.append("join bpm_itemtrabalhofluxo ite on ite.iditemtrabalho = sol.idtarefaencerramento ");
 sql.append("left join usuario usu on usu.idusuario =  ite.idresponsavelatual ");
 sql.append("left join grupo gr on gr.idgrupo = sol.idgrupoatual ");
 sql.append("where ")

    if (parametroExecutor != ""){
             sql.append(" emp.nome like '%");sql.append(parametroExecutor);sql.append("%' and ");
    }
     if(parametroContrato!="-1"){
      sql.append("(con.idcontrato = {PARAM.contrato}) and ");
     }
     if(parametroStatus !="-1"){
        sql.append(" sol.idstatus = ");sql.append(parametroStatus );sql.append(" and ");
     }
     sql.append(" sol.datahorafim BETWEEN  {PARAM.dataInicial} and {PARAM.dataFinal}  ) bs ");

我试着查看文档,但没有我想要的内容

1 个答案:

答案 0 :(得分:0)

您的描述不太清楚,但也许您想要比较如下:

WHERE date_trunc('day', sol.datahorafim) BETWEEN ... AND ...