oracle - 使用 to_date() 选择时间段
问题描述
我正在尝试选择一个特定的时间段(天和小时),以使人们花在观看特定频道上的平均秒数。
我尝试了这个特定的功能:(to_date)
select cust_id, ini_datetime,end_datetime, avg(qtd_seconds) as Avg_Sec, Channel
from crm.tmp_4
where ini_datetime between ( to_date(2019-11-30 17:50:00.0, 'YYYY-MM-DD HH24:MI:SS.FF') and
to_date(2019-11-30 18:00:00.0,'YYYY-MM-DD HH24:MI:SS.FF') )
and end_datetime between ( to_date(2019-11-30 19:40:00.0,'YYYY-MM-DD HH24:MI:SS.FF') and to_date(2019-11-30 19:50:00.0,'YYYY-MM-DD HH24:MI:SS.FF') )
group by cust_id,ini_datetime,end_datetime, Channel
但它给了我这个错误:“ParseException line 3:50 cannot identify input near '17' ':' '50'”。有谁知道如何解决这个问题?
我也尝试了 to_timestamp 并没有工作。
谢谢!
解决方案
该值必须用引号引起来,因此您的查询应该是这样的:
select cust_id, ini_datetime,end_datetime, avg(qtd_seconds) as Avg_Sec, Channel
from crm.tmp_4
where ini_datetime between ( to_date('2019-11-30 17:50:00', 'YYYY-MM-DD HH24:MI:SS')
and to_date('2019-11-30 18:00:00','YYYY-MM-DD HH24:MI:SS') )
and end_datetime between ( to_date('2019-11-30 19:40:00','YYYY-MM-DD HH24:MI:SS')
and to_date('2019-11-30 19:50:00','YYYY-MM-DD HH24:MI:SS') )
group by cust_id,ini_datetime,end_datetime, Channel
数据类型DATE
不支持小数秒。如果您需要它们,请使用TO_TIMESTAMP
而不是TO_DATE
.
推荐阅读
- arduino - Arduino Sketch 没有上传到我的 Arduino Nano
- xamarin - 我的 xamarin 项目中没有 AD-Hoc 选项
- neo4j - 如何取消 neo4j 密码交易
- html - 我的 html 链接只能在新标签页中打开?
- mysql - 错误 2027 (HY000):格式错误的数据包 - 登录期间
- r - 在 blogdown 中找不到 hugo 主题目录
- javascript - 在将返回数据用于另一个函数调用之前,如何等待多个承诺全部完成?
- javascript - 文件上传(角度)到 nginx 上的节点应用程序时出现 502 错误
- fortran - gfortran 非传统预处理器
- java - Java 新实例虚假声明空构造函数