我有一个名为CYCLING_ACCIDENTS_2
的表,其中包含一个名为TIMESTAMP(6)
的{{1}}列,这是一个如何存储日期的示例ACC_DATE_TIME
,我想知道如何我可以只查询这种日期格式的时间,以便我可以拥有所有年份(2005-2012)的时间间隔,但仅限于当天的某些时间。我尝试了很多功能,但到目前为止我所有的功能都是语法错误,我试图在网上搜索,但我可以'看到适合我案件的任何事情。有人可以帮忙吗?
谢谢!
答案 0 :(得分:0)
首先,时间戳是一个数字,而不是一个字符串。所以日期默认显示为31-MAY-12 16.45.00.000000
,但它实际上是我相信自1970年以来的微秒数。
如果您只想选择时间部分,请使用to_char()
select to_char(acc_date_time, 'hh24:mi') time
, count(*) occurences
from cycling_accidents_2
group by to_char(acc_date_time, 'hh24:mi')
编辑:我认为第二个查询实际上回答了您的问题:
select *
from cycling_accidents_2 ca
where to_char(ca.acc_date_time, 'hh24:mi') between '10:00' and '18:00'
and ca.acc_date_time >= to_timestamp('01-01-2005', 'dd-mm-yyyy')
and ca.acc_date_time < to_timestamp('01-01-2013', 'dd-mm-yyyy')
答案 1 :(得分:0)
SELECT * FROM CYCLING_ACCIDENTS_2 WHERE
(EXTRACT(YEAR FROM ACC_DATE_TIME) BETWEEN 2005 AND 2012)
AND
(EXTRACT(HOUR FROM ACC_DATE_TIME) BETWEEN 10 AND 18)