我正在使用 Ruby 与数据库通信,并且有一个统计页面显示设备的统计信息。不幸的是,当执行选择查询以显示页面时,我收到以下错误:
错误 -- : StatementInvalid: Java::JavaSql::SQLSyntaxErrorException: ORA-00936: 缺少表达式
SELECT
COUNT(*) AS count_all,
date(request_time) AS date_request_time,
"REQUESTS"."DEVICE_ID" AS requests_device_id
FROM
"REQUESTS"
WHERE
(
customer_id = 1
AND request_method != 'OPTIONS'
AND request_time BETWEEN '2021-10-27 00:00:00' AND '2021-11-03 23:59:59.000999'
)
AND
(
device_id IS NOT NULL
AND request_time BETWEEN '2021-10-27 00:00:00' AND '2021-11-03 23:59:59.000999'
)
GROUP BY
date(request_time),
"REQUESTS"."DEVICE_ID"
Run Code Online (Sandbox Code Playgroud)
缺少什么表情?我似乎错过了什么。
该查询有两个问题:
date()用。。。来代替trunc()。to_date()(或timestamp 'literal')。例如,您的查询可以运行为:
SELECT
COUNT(*) AS count_all,
trunc(request_time) AS date_request_time,
"REQUESTS"."DEVICE_ID" AS requests_device_id
FROM
"REQUESTS"
WHERE
(
customer_id = 1
AND request_method != 'OPTIONS'
AND request_time BETWEEN to_date('2021-10-27 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND to_date('2021-11-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
)
AND
(
device_id IS NOT NULL
AND request_time BETWEEN to_date('2021-10-27 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND to_date('2021-11-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
)
GROUP BY
trunc(request_time),
"REQUESTS"."DEVICE_ID"
Run Code Online (Sandbox Code Playgroud)
请参阅db<>fiddle处的运行示例。
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |