我正在尝试使用时间戳并处理其中的数据,以便可以测量数据库中的不同内容。
当前,我有一列包含“ DATE”的列,但实际上包含整个图章“ DD / MM / YYYY HH24:MI:SS”
我希望能够获取“ 09:00”到“ 09:15”之间“ DTIME”的所有条目,但是无法正确投射它。
如果我不进行任何转换就输出该列,它将看起来像这样
SELECT ia.DTIME3
FROM ISIS_AUDIT ia
WHERE ia.DTIME3 like to_date('24/01/2019', 'DD/MM/YYYY');
输出:24 / JAN / 19
如果我要将其转换为_char,
SELECT to_char(ia.DTIME3, 'DD/MM/YYYY HH24:MI:SS')
FROM ISIS_AUDIT ia
WHERE ia.DTIME3 like to_date('24/01/2019', 'DD/MM/YYYY');
输出:24/01/2019 07:10:52
我希望能够使用此DTIME3并在时间之间找到条目,但CAST和CONVERT to TIME无效。
这是我的工作选项,但是它仍然输出日期,我不想指定日期,以便可以在一周的任何一天运行。
WHERE ia.DTIME3 between to_date('24/01/2019 09:00:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('24/01/2019 09:15:00', 'DD/MM/YYYY HH24:MI:SS');
输出:24/01/2019 09:00:01
答案 0 :(得分:3)
当前,我有一列包含“ DATE”的列,但实际上包含整个图章“ DD / MM / YYYY HH24:MI:SS”
这就是Oracle DATE
datatype的作用:存储日期和时间(不包括小数秒,属于TIMESTAMP
数据类型)。 Oracle中没有仅用于日期(没有时间)的特定格式。
要过滤一天中的时间,可以使用the TO_CHAR()
function将日期转换为代表其时间的字符串,并且可以进行比较:
TO_CHAR(ia.DTIME3, 'hh24:mi') BETWEEN '09:00' AND '09:14'
您还可以将日期CAST
设置为时间戳记,并使用the EXTRACT()
function:
EXTRACT(HOUR FROM CAST(ia.DTIME3 AS TIMESTAMP)) = 9
AND EXTRACT(MINUTE FROM CAST(ia.DTIME3 AS TIMESTAMP)) < 15
答案 1 :(得分:1)
Oracle具有DATE
和TIMESTAMP
数据类型;都具有年,月,日,时,分,秒的组成部分(TIMESTAMP
也具有小数秒)。 Oracle没有TIME
数据类型。
相反,使用TRUNC()
将时间分量截断为午夜并添加间隔文字:
SELECT *
FROM ISIS_AUDIT
WHERE DTIME BETWEEN TRUNC( DTIME ) + INTERVAL '09:00' HOUR TO MINUTE
AND TRUNC( DTIME ) + INTERVAL '09:15' HOUR TO MINUTE;
答案 2 :(得分:0)
and ia.DTIME1 not between to_date('&&S_DATE 08:50:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('&&S_DATE 09:20:00', 'DD/MM/YYYY HH24:MI:SS')
and ia.DTIME1 not between to_date('&&S_DATE 11:50:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('&&S_DATE 12:40:00', 'DD/MM/YYYY HH24:MI:SS')
and ia.DTIME3 not between to_date('&&S_DATE 08:50:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('&&S_DATE 09:20:00', 'DD/MM/YYYY HH24:MI:SS')
and ia.DTIME3 not between to_date('&&S_DATE 11:50:00', 'DD/MM/YYYY HH24:MI:SS') and to_date('&&S_DATE 12:40:00', 'DD/MM/YYYY HH24:MI:SS')
我正在尝试这样做,但是我注意到如果我的开始时间为08:30,结束时间为09:30,那么它介于09:00和09:15之间,因此我想将其从表。当前使用的WHERE子句非常具体,只有在时间戳包含指定值的情况下才会排除。
它真的想读取“ DTIME1到DTIME3不在09:00和09:15之间”