2014-05-02 147 views
-1

我使用的是Oracle数据库,我buidling查询和我不能确定如何做我设置为“创造”领域的一个比较ORACLE SQL查询

SELECT C.IS_AW_TITLE, A.PORTAL_OBJNAME, C.IS_AW_ACTIVE_FLG, 
(TO_CHAR(CAST((C.CREATEDTTM) AS TIMESTAMP),'YYYY-MM-DD-HH24.MI.SS.FF')) AS 
CREATED,..... 

FROM ..., (sysadm.PS_IS_AW_PG_DEFN C LEFT OUTER JOIN sysadm.PS_IS_AW_SECURITY D ON 
C.IS_AW_GRP_ID = D.IS_AW_GRP_ID),... 

WHERE (C.IS_AW_CREF_OBJ = A.PORTAL_OBJNAME 
AND C.IS_AW_GRP_ID = E.IS_AW_GRP_ID... 

的“创造”领域产生的结果相似,这个例子:2011-09-26-11.22.31.000000

我将如何将它包含在查询中来说出'AND Created = to_timestamp(.....,2011-09-26-11.22.31.000000) ?

+0

为什么你把这些弄到这些奇怪的小块? – Zane

+0

c.createdtm的数据类型是什么? –

回答

0

你比方说,宣布(期限不知道是否合适,随时纠正我)created字段to_char,所以它的类型是varchar2,这意味着你不能与to_timestamp进行比较。

我看到几个方法可以做到这样的comparsion:

  1. 离场原样,并且比较CAST((C.CREATEDTTM) AS TIMESTAMP与您需要的日期;
  2. 定义created作为时间戳,即删除to_char;
  3. created与`to_char(to_timestamp(...));

哪一个最合适取决于你在查询结果中如何使用created字段。如果可能的话,我个人会选择选项2.