Campo do Tipo Date

Uso o SC 8.1.040 com MSSQL Server.

Estou com problemas para usar campos do tipo DATE nas consultas.
Por exemplo, em uma tabela tenho o campo DTVENCIMENTO com o tipo DATE. A inclusão é feita normalmente.
Mas não consigo usar este campo nas consultas, ele é retornado como sendo tipo SQL = VARCHAR, não reconhece que é do tipo DATE.
Consequentemente não posso usar como filtro esse campo, pois é reconhecido como VARCHAR.
Mesmo que eu informe na configuração do campo na consulta como sendo do tipo Data, ao tentar executar a consulta, após informar o período de data recebo o seguinte erro:

Atenção Erro ao acessar o banco de dados Conversion failed when converting date and/or time from character string. select count(*), sum(l.VLLANCAMENTO) as sum_l_vllancamento, sum(l.vlpago) as sum_l_vlpago, sum(l.vlsaldo) as sum_l_vlsaldo from frota_lancamento l inner join frota_centrofinanceiro cf on l.idcentrofinanceiro = cf.idcentrofinanceiro inner join frota_conta c on l.idconta = c.idconta inner join frota_empresa e on l.idempresa = e.idempresa inner join frota_centrocusto cc on l.idcentrocusto = cc.idcentrocusto left outer join frota_fornecedor f on l.idfornecedor = f.idfornecedor left outer join frota_funcionario ff on l.idfuncionario = ff.idfuncionario where l.TPLANCAMENTO='0' and l.VLSALDO > 0 and ( l.DTVENCIMENTO between 'aaaa-01-01' and 'aaaa-12-31' )

Notem que a data fica “mal formada”, o ano não é reconhecido.
Alguém já passou por isso? Existe alguma solução?
Para campos do tipo Data e Hora isso não acontece.

Qual o modelo do SGBD usado nas conexões? Ex: Native SRV,Native PDO, ODBC ou Mssql Server?

Mssql Server

Só por curiosidade…

Configura ele pra acessar PDO e cria uma consulta nova e veja se o campo DATE, se puxou como DATE no tipo de campo.

Jailton,
criei uma nova conexão utilizando PDO e fiz o teste, funcionou!
Valeu!
Isso estava me dando uma enorme dor de cabeça!
Pena que vários campos eu já mudei para DATETIME devido a isso.

Vou estudar qual a diferença entre esses tipos de conexões (PDO,SQL SERVER,etc).

Por isso que eu sempre recomendo o PDO, eu uso para vários bancos ‘diferentes MySQL/MariaDB/SQlite/Firebird/Access’ e sempre dá certo, porque a vantagem do PDO
é que ele ‘padroniza’ os campos SQL.

Obrigado pela informação.

Estou tentando essa mesma solução, porém recebo o seguinte erro:

Connection Error

Connection attempt failed: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712

Já instalei o drive sugerido e não da certo.

Ola

Acho que tem que habilitar no php.ini a extensao.

Ola Moacir!

Muito Obrigado, deu certo.

Liberei as seguintes extensões:

  • php_pdo_sqlsrv_56_nts.dll -> Sem comunicação segura
  • php_pdo_sqlsrv_56_ts.dll -> Com comunicação segura

Mas só isso não resolver, também tive que instalar o Microsoft® ODBC Driver 11 para SQL Server® - Windows.

Funcionou bonitinho.