Oracle查询日期字段的时间

时间:2014-10-06 15:50:36

标签: sql oracle select time

我有一个DATE类型的列存储数据包含日期和时间。我做的时候能看到价值

select   CAST(MSG_DT AS TIMESTAMP) from   table;

这是输出

17-MAR-08 15:38:59,000000000

我必须使用

选择行
  • 仅限日期

    select       CAST(MSG_DT AS TIMESTAMP) from   
    MWRB_RECEIVE where  
    MSG_DT >= TO_DATE( '2000-02-03' ,'YYYY-MM-DD')  
    and  
    MSG_DT <= TO_DATE( '2010-02-03' ,'YYYY-MM-DD')
    
  • 只有时间(例如:在12:00:11和23:02:55之间的每条消息)


在DB2中我可以做到

SELECT *                          
FROM TABLE              
WHERE DATE(INS_TMS) = '2014-02-18'

SELECT *                          
FROM TABLE              
WHERE TIME(INS_TMS) > '09.55.00'  

在ORACLE中,我看不到等效内容。

3 个答案:

答案 0 :(得分:0)

当数据库中的列是DATE类型时,为什么要将列值转换为TIMESTAMP?秒的小数部分将始终为0,因为DATE仅具有秒值的分辨率。您需要将小时,分钟和秒格式说明符添加到查询中:

select MSG_DT from
MWRB_RECEIVE 
where MSG_DT between TO_DATE( '2000-02-03 12:00:11' ,'YYYY-MM-DD HH24:MI:SS') AND
           TO_DATE( '2010-02-03 23:02:55' ,'YYYY-MM-DD HH24:MI:SS')

答案 1 :(得分:0)

无需拆分日期和小时,您可以将其放在单个where子句

where field&gt; to_date('20121212 12:12:12,'YYYYMMDD HH24:MI:SS')

检查你的参考oracle to_date(),因为它似乎是你唯一需要的东西

答案 2 :(得分:0)

试试这个:

SELECT *
  FROM your_table
 WHERE TO_CHAR (start_date, 'yyyy-mm-dd') = '2014-10-06'
       AND TO_CHAR (start_date, 'hh24:mi:ss') > '10:00:00'