我有一个名为CYCLING_ACCIDENTS_2
的表,其中包含一个名为ACC_DATE_TIME
的TIMESTAMP(6)
列,这是一个如何存储日期的示例31-MAY-12 16.45.00.000000
,我想知道如何只查询这样的日期格式,以便我可以在所有年份(2005-2012)都有一段时间间隔,但只限于当天的特定时间。我尝试了很多功能,但到目前为止我所有的都是语法错误,我试图在网络上搜索,但我看不到任何适合我的情况。谁能帮忙?Oracle中的时间戳数据类型查询
谢谢!
我有一个名为CYCLING_ACCIDENTS_2
的表,其中包含一个名为ACC_DATE_TIME
的TIMESTAMP(6)
列,这是一个如何存储日期的示例31-MAY-12 16.45.00.000000
,我想知道如何只查询这样的日期格式,以便我可以在所有年份(2005-2012)都有一段时间间隔,但只限于当天的特定时间。我尝试了很多功能,但到目前为止我所有的都是语法错误,我试图在网络上搜索,但我看不到任何适合我的情况。谁能帮忙?Oracle中的时间戳数据类型查询
谢谢!
首先,时间戳是一个数字,而不是一个字符串。所以日期默认显示为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')
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)
它的工作谢谢 – user3523583