使用查询中创建的新列进行过滤

时间:2018-12-09 18:35:46

标签: sql oracle

我创建了一个名为CREATED_DATE的列,该列将时间戳转换为日期和时间,结果为:

11/14/2018 19:28:56

当我尝试使用-AND CREATED_DATE = TRUNC(SYSDATE)过滤WHERE子句中的查询时

我收到“ ORA-00904:“ CREATED_DATE”:无效的标识符”

如何解决此问题?

SELECT
            DATE '1899-12-30' + WRITETIMESTAMP AS CREATED_DATE,
            ID,
            USERTYPEID,
            PROFILEID,
            NAME,
            ADDRESS1,
            ADDRESS2,
            CITY,
            COUNTY,
            STATE,
            ZIP,
            COUNTRY,
            LATITUDE,
            LONGITUDE,

            COMMENT1,
            COMMENT2,
            ROUTEGROUPID ||','|| ROUTEID AS RouteSegment
FROM 
JOIN PEETM_FM_I.ROUTEACTIVITY R ON L.ID = R.LOCATIONID
WHERE ID LIKE '01%' OR ID LIKE '07%'

2 个答案:

答案 0 :(得分:0)

使用<uc:RadioUC Title="Is it YES" IsYes="{Binding IsLocalYes, Mode=TwoWay}"/> 而不是将日期与时间戳连接起来,将其从一种类型转换为另一种类型,如where子句中正确指出错误为无效标识符。

TO_DATE

这将以指定的格式读取数据,或者如果您想将数据显示为使用 SELECT TO_DATE(date_column,'YYYY-MM-DD HH:MM:SS') FROM TABLE ......

TO_CHAR

或有趣的 SELECT TO_CHAR(date_column,'YYYY-MM-DD HH:MM:SS') FROM TABLE ....... 时间戳日期最有效

TO_TIMESTAMP

答案 1 :(得分:0)

您需要重复该表达式。想必您想要:

TRUNC(DATE '1899-12-30' + WRITETIMESTAMP, 'DAY') = TRUNC(sysdate, 'DAY')