簡體   English   中英

Oracle中的時間戳數據類型查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM