我有一个名为CYCLING_ACCIDENTS_2的表,其中包含一个名为ACC_DATE_TIME的TIMESTAMP(6)列,这是一个如何存储日期的示例,我想知道如何才能以这样的日期格式查询时间,以便我可以有一个时间间隔(2005-2012年),但仅限于一天中的特定时间。我尝试了许多功能,但到目前为止,我所得到的只是语法错误,我试图在网上搜索,但我看不到任何适合我的情况。有人能帮忙吗?
谢谢!
发布于 2014-05-09 14:47:06
首先,时间戳是数字,而不是字符串。因此,在默认情况下,日期显示为31-MAY-12 16.45.00.000000,但实际上是1970年以来的微秒数。
如果只想选择时间部分,请使用查尔()
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')发布于 2014-05-09 15:02:57
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)https://stackoverflow.com/questions/23567446
复制相似问题