首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00936:在执行查询时缺少表达式

ORA-00936:在执行查询时缺少表达式
EN

Stack Overflow用户
提问于 2021-11-03 16:32:08
回答 1查看 60关注 0票数 1

我使用Ruby与数据库进行通信,我有一个统计页面,其中显示设备的统计信息。不幸的是,当执行select查询以显示页面时,我得到了以下错误:

错误- StatementInvalid: Java::JavaSql::SQLSyntaxErrorException: ORA-00936:缺失表达式

代码语言:javascript
复制
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"

少了什么表情?我好像错过了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-03 17:04:55

查询有两个问题:

  • date()替换为trunc()
  • 要使用时间戳文字,请使用to_date() (或timestamp 'literal')。

例如,您的查询可以以以下方式运行:

代码语言:javascript
复制
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"

请参见在db<>fiddle上运行示例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69828489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档