Descrição:
É possível criar uma consulta convertendo o campo E3TimeStamp da tabela do E3Storage em DateTime?
Solução:
Sim, isto é possível.
Se você está usando Oracle, deve utilizar a função E3GetDateValue, criada automaticamente pelo E3. Esta função formata um número em data. Para visualizar no formato data/hora, utilizamos em conjunto a função TO_CHAR.
Exemplo:
Query.SQL = "SELECT
TO_CHAR(E3GETDATEVALUE(E3TimeStamp),'DD/MM/YYYY HH:MI:SS')AS E3TimeStamp
,FieldValue FROM <%TableName%> WHERE ( E3TimeStamp >=
<%StartTime%> AND E3TimeStamp <= <%EndTime%> AND
FieldID = <%Fid%> ) ORDER BY E3TimeStamp"
Para mostrar a data com precisão de milisegundos, pode-se complementar o comando TO_CHAR adicionando SSSSS ao formato da data/hora.
Exemplo:
SELECT TO_CHAR(E3GETDATEVALUE(E3TimeStamp),’DD-MM-YYYY HH:MI:SS.SSSSS’)AS E3TimeStamp FROM <%TableName%>
Observação: Para fazer um filtro por data, as variáveis <%StartTime%> e <%EndTime%> devem ser preenchidas com a data/hora no formato Float ou Double. Utilize a função CDbl() do VBScript para converter uma data em Double.
Exemplo:
Query.SQL = "SELECT
FieldID,Convert(datetime,E3TimeStamp -2) AS E3TimeStamp,FieldValue FROM
<%TableName%> WHERE ( E3TimeStamp >= <%StartTime%>
AND E3TimeStamp <= <%EndTime%> AND FieldID = <%Fid%> )
ORDER BY E3TimeStamp"
Nota: É necessário colocar “E3TimeStamp -2”, pois existe uma diferença entre os calendários padrão utilizados pelo Elipse E3 e pelo SQL. A data padrão utilizada no Elipse E3 é 30/12/1899 0:00:00; já no SQL, é 01/01/1900 0:00:00. Ao gravar a informação no banco de dados, o E3 se baseia na sua data padrão; porém, quando o SQL faz a conversão, ele se baseia na sua própria data padrão.
Utilizei essa conversão, no entanto, pra fazer a busca das datas, ele da erro na consulta.