SQL Server - Consulta a tabla BD Wonderware (Sistema PLC)

   
Vista:

Consulta a tabla BD Wonderware (Sistema PLC)

Publicado por Carlos (4 intervenciones) el 07/04/2015 03:09:19
Estimados, espero puedan ayudarme.
Estoy realizando una aplicación en PHP que consulta una base de datos SQL Server 2005 de la empresa Wonderware (PLC) por medio de ODBC. Tengo problemas con una consulta que se realiza a una tabla que se llama WideHistory (con OpenQuery). Necesito retornar valores desde el inicio del día hasta el momento en que se realiza la consulta. La query es la siguiente:

SELECT CONVERT(nvarchar ,DateTime, 108) AS DateTime, CONVERT(DECIMAL(10, 2), A_LLT_LIT_ING)+CONVERT(DECIMAL(10, 2), A_LLT_LIT_MZC)+CONVERT(DECIMAL(10, 2), A_CHUNO_LIT_TK1) AS Total FROM OpenQuery(INSQL,'SELECT DateTime, A_LLT_LIT_ING, A_LLT_LIT_MZC, A_CHUNO_LIT_TK1 FROM WideHistory WHERE wwRetrievalMode = ''Cyclic'' AND DateTime >= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) AND wwResolution = 3600000')

DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0) // inicio del día, no funciona.
DATEADD(dd, -1, GETDATE()) // las últimas 24 horas, funciona.

No comprendo el porqué DATEADD funciona de una forma y no de otra. ¿Habrá otra alternativa de retornar valores desde el inicio del día?

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Consulta a tabla BD Wonderware (Sistema PLC)

Publicado por Isaias (3180 intervenciones) el 07/04/2015 17:14:50
¿Por qué haces la consulta con OPENQUERY?, tu comentas que es una base SQL SERVER 2005.

¿Por que dices que no funciona?, Ya consultaste el MIN de tu fecha....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a tabla BD Wonderware (Sistema PLC)

Publicado por Carlos (4 intervenciones) el 08/04/2015 19:49:44
Estimado.
Gracias por responder.
WideHistory es una tabla ampliada del sistema Wonderware que se consulta solo de esta forma (según el manual del sistema). Utilizando DATEADD(dd, -1, GETDATE()) retorna los valores de las últimas 24 horas, pero consultando la tabla con DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0) para que retorne valores desde el inicio del día, no lo hace.

No comprendo por que DATEADD funciona de una forma y no de otra.

Realizando una consulta a otra tabla (llamada History -sin OpenQuery-) funciona:
SELECT CONVERT(DECIMAL(10, 2),Value) AS Value, CONVERT(nvarchar ,DateTime, 120) AS DateTime, TagName FROM History WHERE TagName IN ('D_601_LIT_1') AND wwRetrievalMode = 'Cyclic' AND DateTime >= DATEADD(dd,DATEDIFF(dd,0,GETDATE()),-7) AND DateTime >= DATEADD(dd,DATEDIFF(dd,0,GETDATE()),1) AND wwResolution = 1000*60*240 AND Value IS NOT NULL

Las tablas aquí indicadas, según el manual del software Wonderware, se consultan con OpenQuery y sin OpenQuery respectivamente.

Link manual: http://www.logic-control.com/media/InSQLConcepts.pdf

Saludos y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar