查询在Yseterday 6AM到今天早上6点之间提取数据......
SELECT
lot_id,
log_time,
batch_no,
eqp_id,
STATION_ID,
EXTRACTVALUE (META_DATA, '/lot_info/A3') AS A3,
EXTRACTVALUE (META_DATA, '/lot_info/A3Info') AS A3Info,
EXTRACTVALUE (
META_DATA,
'/lot_info/apc_status_info'
) AS apc_status_info
FROM
t_dlis_log_history
WHERE (
(EQP_ID = 'ALC4360')
OR (EQP_ID = 'ALC4361')
OR (EQP_ID = 'ALC1360')
OR (EQP_ID = 'ALC1361')
OR (EQP_ID = 'ALC1362')
OR (EQP_ID = 'ALC1363')
OR (EQP_ID = 'ALC1364')
OR (EQP_ID = 'ALC1365')
OR (EQP_ID = 'ALC355')
OR (EQP_ID = 'ALC353')
OR (EQP_ID = 'ALC4350')
OR (EQP_ID = 'ALC354')
)
AND ((
log_time >= DATEADD (
HOUR,
6,
CONVERT(VARCHAR (10), GETDATE (), 110)
)
AND (
log_time <= DATEADD (
HOUR,
6,
CONVERT(VARCHAR (10), GETDATE () + 1, 110)
)
)
)
显示错误表达错误...
答案 0 :(得分:2)
您正在将Oracle语法与SQL Server语法混合使用。
EXTRACTVALUE
是Oracle函数,但DATEADD
是SQL Server函数。根据错误消息,我猜你有Oracle。
在Oracle中,您可以使用它来为日期添加小时数(在这种情况下,您将在昨天00:00和今天00:00添加6小时):
log_time >= trunc(sysdate-1) + 6/24 and log_time <= trunc(sysdate) + 6/24
或者:
log_time between trunc(sysdate-1) + 6/24 and trunc(sysdate) + 6/24
(另外,在您的原始查询中,您最后错过了)
)