Page 1 of 1

String SQL

Posted: Thu Dec 05, 2013 1:41 am
by WSL
Boa noite,

Qual é a sintaxe correta para substituir a string '2013-12-02 00:00:00' pelo valor de um tag do tipo DateTime para formar um comando SQL válido no SQLite?

Code: Select all

local fim = Tags.Get('Kernel.Tags.Local.TagLocalGroup_001.Hora_Fim')
print(' Fim:'..tostring(fim.Value))

cursor, error  = con:Execute("SELECT * FROM Tabela_Evento WHERE value_TagRef_Fim > '2013-12-02 00:00:00' ;")
Desde já agradeço.

Wilson Lima

Re: String SQL

Posted: Thu Dec 05, 2013 1:34 pm
by thiago.bastos
Caro Wilson, bom dia!

O formato de Data/Hora dos Tags do tipo DateTime no HIscada Pro possuem o formato dd/mm/yyyy hh:mm:ss(dia/mês/ano hora:minuto:segundo).

Já no SQLite, o formato padrão de Data/Hora é yyyy-mm-dd hh:mm:ss(ano-mês-dia hora:minuto:segundo).

Portanto, o que devemos fazer neste caso, é formatar o valor do Tag DateTime, para o formato padrão de Data/Hora do SQLite.

Para fazer isso, consulte a seção Acesso ao DateTime com a escolha do formato desta página do manual do HIscada Pro. Neste caso você deve passar como parâmetro para função GetFormatString o formato padrão de Data/Hora do SQLite(yyyy-mm-dd hh:mm:ss).

Exemplo:

Code: Select all

-- Tag local do Kernel com o formato DateTime
local fim = Tags.Get("Kernel.Tags.Local.TagLocalGroup_001.Hora_Fim")
print(' Fim:'..tostring(fim.Value))

-- Formata em uma variável auxiliar, a Data/Hora do tag "fim" para o formato padrão do SQLite
local DataHoraConsultaFormatoSQLite = fim.Value:GetFormatString("yyyy-mm-dd hh:mm:ss")

-- Comando SQL de consulta utilizando o valor de um tag DateTime como parâmetro
cursor, error  = con:Execute("SELECT * FROM Tabela_Evento WHERE value_TagRef_Fim > '" .. DataHoraConsultaFormatoSQLite .. "' ;")

Em caso de novas dúvidas, basta utilizar nosso fórum!

Re: String SQL

Posted: Thu Dec 05, 2013 7:11 pm
by WSL
Excelente explicação, como de costume.

Muito grato!