[英]Timestamp data type query in Oracle
我有一个称为表CYCLING_ACCIDENTS_2
含有TIMESTAMP(6)
称为列ACC_DATE_TIME
,这是日期是如何被存储的例子31-MAY-12 16.45.00.000000
,我想知道如何可以在这样的查询只是时间日期格式,这样我就可以为所有年份(2005-2012)设置一个时间间隔,但仅限于一天中的某些时间。 我尝试了许多功能,但到目前为止,我所得到的只是语法错误,我尝试在网络上搜索,但找不到适合我情况的任何内容。 有人可以帮忙吗?
谢谢!
首先,时间戳是数字,而不是字符串。 因此,日期默认情况下显示为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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.