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