2014-05-09 38 views
0

我有一個名爲CYCLING_ACCIDENTS_2的表,其中包含一個名爲ACC_DATE_TIMETIMESTAMP(6)列,這是一個如何存儲日期的示例31-MAY-12 16.45.00.000000,我想知道如何只查詢這樣的日期格式,以便我可以在所有年份(2005-2012)都有一段時間間隔,但只限於當天的特定時間。我嘗試了很多功能,但到目前爲止我所有的都是語法錯誤,我試圖在網絡上搜索,但我看不到任何適合我的情況。誰能幫忙?Oracle中的時間戳數據類型查詢

謝謝!

回答

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') 
+0

它的工作謝謝 – user3523583

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)