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.
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
0