2017-02-07 4 views
0

Этот код может улавливать только дату, я хочу, чтобы захватить все время дня (sol.datahorafim = 00:00:00 в dataInicial = 23:55:55). Как мне это сделать?дата DATETIME с часами между сценарием PostGreSQL

ИЗОБРАЖЕНИЕ С ПАРАМОМ из xml и функции.

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 "); 

Я стараюсь найти в документации, но ничего точно, что я хочу

+0

Я работал как с Java, так и с JavaScript, но я все еще не уверен, что это такое. Но я уверен, что SQL-инъекция возможна рядом с 'emp.nome like' и, возможно, рядом с' sol.idstatus = '. Если эти фигурные скобки используются для привязки значений для подготовленных утверждений, почему бы вам не оказаться в этих местах? (Первый может быть чем-то вроде 'emp.nome, как CONCAT ('%', {PARAM.executor}, '%')' – pozs

ответ

0

Ваше описание не совсем понятно, но может быть, вы хотите для сравнения:

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

в случае: 'sql.append (" date_trunc ('day', sol.datahorafim) МЕЖДУ {PARAM.dataInicial} и {PARAM.dataFinal}) bs ");'? –

+0

Возможно. Трудно сказать, потому что вы не говорите нам, какой язык программирования и окружающая среда вы используете. –

+0

Javascript, извините –