我试图查看有多少项目比3年更早。当我使用
select count (*) from ae_dt509 where field13 < to_timestamp( '2013-06-15 00:00:00', 'YY-MM-DD HH:MI:SS' )
我收到此错误:
Error starting at line 1 in command:
select count (*) from ae_dt509 where field13 < to_timestamp( '2013-06-12 00:00:00', 'YY-MM-DD HH:MI:SS' )
Error report:
SQL Error: ORA-01843: not a valid month
01843. 00000 - "not a valid month"
*Cause:
*Action:
我不确定这是错的......
修改
我更改了代码以更正年份:
select count (*) from ae_dt509 where field13 < to_timestamp( '2013-06-15 00:00:00', 'YYYY-MM-DD HH24:MI:SS' )
我得到了同样的错误。
然后通过删除日期周围的qoutes来改变它:
select count (*) from ae_dt509 where field13 < to_timestamp( 2013-06-15 00:00:00, 'YYYY-MM-DD HH24:MI:SS' )
得到了
Bind Variable "00" is NOT DECLARED
答案 0 :(得分:1)
问题似乎是field13
不是日期或时间戳字段。
例如,如果我在本地服务器上运行以下语句:
select * from (
select '2013-06-12 00:00:00' as some_fake_date
from dual
)
where some_fake_date > systimestamp
...我得到了和你一样的错误。
要解决您的问题,请使用field13
和相应的格式参数包装to_timestamp
:
where to_timestamp(field13, '<insert_correct_format_specifier>' < to_timestamp('2013-06-15 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
这当然意味着如果您依赖field13
上的索引,您的预表现会降低。理想情况下,您应将field13
的列类型修改为实际日期或时间戳。
答案 1 :(得分:0)
来自ae_dt509的选择计数(),其中field13&lt; to_timestamp(2013-06-15 00:00:00,&#39; YYYY-MM-DD HH24:MI:SS&#39;)*投掷 Bind Variable&#34; 00&#34;未声明,因为日期未包含在&#39;&#39;引号