我有一个存储过程,我想格式化其中的时间字段: SELECT to_date(A.RECORDTIME,'yyyy-mm-dd') as RECORDTIME FROM HISTORYSTATE A
执行后报:“文字与格式字符串不匹配”的错,请高手们指点如何解决,谢谢。在线等
执行后报:“文字与格式字符串不匹配”的错,请高手们指点如何解决,谢谢。在线等
解决方案 »
- oracle RAC归档日志爆增,请求提供解决方案
- SQL 性能优化
- 帮忙优化SQL!提速就结贴!
- Oracle 问题急 哪位求助大侠
- 合并sql
- OracleOraHome92ManagementServer服务启动不了了
- 使用一个非dba的用户user1(默认表空间tsnow)如何查询其它表空间(tsbak)中的数据呢?
- 从access导入到oracle的表,改了字段名再保存后就出现了两个相同名称的表?
- 修改数据库的processes数量,会给系统带来什么负担么?
- 白痴问题:在安装oracle时如何配置win2k服务器的域?
- OracleHome92ManageServer无法启动
- 求解,怎样将.shp(shapefile)地图文件导入oracle数据库,非常感谢!
SELECT to_char(A.RECORDTIME,'yyyy-mm-dd') as RECORDTIME FROM HISTORYSTATE A;
RECORDTIME是2008-12-13 6:15就不可以按那个格式转换。
还有你RECORDTIME这个是date型的还是字符型的。date型的要to_char
to_date(to_char(dateCol,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')
如果你的存储格式是这样的2008-10-23 6:15
那用substr 函数截取前面十位substr(RECORDTIME,1,10);再转换。跟当前时间对比的话也可以用字符串转换
substr(RECORDTIME,1,10)=to_date(sysdate,'yyyy-mm-dd')
=========================
如果想以一定的格式数据日期类型的字段,用该用 to_char 而不是 to_date。date 类型的存储格式是一定的。我需要用此字段进行与当前时间的比较。
=================================
如果此字段也是 date 类型的,无需转换。
建议这样:select to_date(case when length(to_char(a.RECORDTIME))<8 then '20081023' ELSE to_char(a.RECORDTIME) END,'YYYY-MM-DD')
FROM HISTORYSTATE A
;