【问题标题】:date to datetime with Hours between script POSTGRESQL日期到日期时间,脚本 POSTGRESQL 之间的时间
【发布时间】:2017-02-07 11:42:52
【问题描述】:

此代码只能捕获日期,我想捕获一天中的所有时间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 ");

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

【问题讨论】:

  • 我使用过 Java 和 JavaScript,但我仍然不确定这到底是什么。但我很确定,SQL 注入可能在emp.nome like 附近,也可能在sol.idstatus = 附近。如果这些花括号用于绑定准备好的语句的值,为什么不在那些地方也使用它们呢? (第一个可能类似于emp.nome like CONCAT('%', {PARAM.executor}, '%')

标签: postgresql datetime


【解决方案1】:

你的描述不是很清楚,但也许你想这样比较:

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

【讨论】:

  • 案例中:sql.append(" date_trunc('day', sol.datahorafim) BETWEEN {PARAM.dataInicial} and {PARAM.dataFinal} ) bs ");?
  • 可能。很难说,因为你没有告诉我们你使用什么编程语言和环境。
  • Javascript,对不起
  • 大括号 ({PARAM...}) 是什么?
  • 好吧,你没有显示替换{...}的那段代码,但是如果它们是date可以理解的格式,你的目标是匹配开头之间的所有内容第一次约会和第二次约会结束,我的回答应该有效。
猜你喜欢
  • 2012-09-07
  • 2014-05-22
  • 2020-10-19
  • 2011-09-02
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多