我有一个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中,我看不到等效内容。
答案 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'