我有一個名爲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