Oracle日期字段的查询时间
我有一个DATE类型的列,存储的数据包含日期和时间。我可以看到价值时,我做Oracle日期字段的查询时间
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分十一秒和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我看不到的等价物。
唯一试试这个:
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'
当数据库中的列是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')
这是很好,当我有一个初始日期和结束日期。在我的情况下,第二个问题不使用任何日期,因为我没有开始日期或结束日期 – user1594895 2014-10-06 16:04:12
我只使用可视化purpouse的演员阵容。 – user1594895 2014-10-06 16:07:24
有没有需要分割日期和时间,你可以把它在一个单一的where子句
其中现场> TO_DATE('20121212 12时12分十二秒, 'YYYYMMDD HH24:MI:SS')
检查供你参考的Oracle TO_DATE(),因为它似乎你需要
对不起,我的问题是“只有时间(例如:12:00:11和23:02:55之间的每条消息)”我对DATE每天都不感兴趣。我没有DATE间隔只有时间间隔。 – user1594895 2014-10-06 16:10:10
好的,但你写这个是因为你确定没有TIME函数,或者因为它更简单地使用char。正如我告诉Raad最近的一个是EXTRACT,但我必须使用字符串。这很容易出错。 – user1594895 2014-10-06 16:13:55
to_Char是我知道这样做的方式。如果存在一个时间函数可以做到这一点,好得多,但直到现在我还没有看到它。 – Aramillo 2014-10-06 16:18:16
好的,我没有使用你的方法: – user1594895 2014-10-06 16:31:45