我正在使用SAP BODS,并尝试使用SQL查询转换从ORACLE服务器获取数据。现在该表有一个名为latest_changed_date
的列,它是一个datetime列。我只需要该表中的昨天和当天数据。现在,由于列是日期时间,我需要将其转换为日期,但当我使用to_date
函数时,我得到以下错误。
SELECT *
FROM ABC.TEST
WHERE TO_DATE(LATEST_CHANGED_DATE) = TO_DATE(SYSDATE-1)
数据库错误消息为
ORA-01843:不是有效的月份
我尝试在TO_DATE条件中给出日期格式,如下所示:
SELECT *
FROM ABC.TEST
WHERE TO_DATE(LATEST_CHANGED_DATE,'YYYY-MM-DD') >= TO_DATE(SYSDATE-1,'YYYY-MM-DD')
这里我得到了错误:
日期格式图片在转换整个输入字符串之前结束
我也使用了trunc
函数,并再次得到:
not a valid month
或
inconsistent datatypes: expected NUMBER got DATE
下面是该列的示例数据。我只需要当前和前一天的数据列的数据。
更新:我认为主要问题是我无法确定源表中列的正确数据类型,目前我没有一个选项来确定。
2条答案
按热度按时间uz75evzq1#
你可以使用
TRUNC()
将SYSDATE
截短到一天的开始,而不是试图隐式地将日期转换为字符串并使用TO_DATE( string_value, format_model )
将它们转换回来:qv7cva1a2#
这将起作用:
例如,以这个为例:
你必须在两边取sysdate减去,才能通过一个小于等于2的数字进行比较,才能得到昨天之前的一天和一天,并给出正确的输出。
谢谢你!!!!!!!!!!!!!