一个简单的思路:
取出这部分字符串后看能不能做to_date转换,如果成功就合法
取出这部分字符串后看能不能做to_date转换,如果成功就合法
解决方案 »
- 问一下安装Oracle10g的问题
- win7 安装oracle 10g 后需要主机身份验证,但是总是不能验证通过
- 已经建里的表分区,怎么插入数据
- 问一个SQL问题 谢谢!
- 数据库导入导出问题
- 安装失败问题
- 求oracle基础知识教程
- VC++中如何使用户以SYSDBA/SYSOPER登录?
- 不知这个问题有无高手能够帮我解答?能不能解答希望都邦我看一看,谢了.
- 自动追踪转账规律(oracle语句)
- 为感谢zgh2003(世纪飞扬) 的帮忙,特此散分!!
- 服务启动失败:本来已经安装调试完毕的oracle服务器今天开机突然发现oracle not available (pl/sql) 后发现启动状态如下:
连接到:
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - ProductionSQL> create or replace function isdate(mydate in varchar2)
2 return char is
3 tmp date;
4 begin
5 tmp:=to_date(mydate,'yyyymmdd');
6 return '1';
7 exception
8 when others then
9 return '0';
10 end isdate;
11 /函数已创建。SQL> select isdate(substr('320102199901012015',7,8)) from dual;ISDATE(SUBSTR('320102199901012015',7,8))
----------------------------------------------------------------------------------------------------
1SQL> select isdate(substr('320102199901322015',7,8)) from dual;ISDATE(SUBSTR('320102199901322015',7,8))
----------------------------------------------------------------------------------------------------
0SQL>
CREATE OR REPLACE FUNCTION is_date
(
p_period_start varchar2 default null
)
RETURN NUMBER
IS
tmpVar NUMBER;
tmpDate date;
/******************************************************************************
NAME: is_date
PURPOSE: REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2004-12-21 1. Created this function. NOTES: Automatically available Auto Replace Keywords:
Object Name: is_date
Sysdate: 2004-12-21
Date and Time: 2004-12-21, 14:25:35, and 2004-12-21 14:25:35
Username: (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/
BEGIN
/* confirm if null*/
if (p_period_start is not null) then
begin
tmpDate := to_date(p_period_start,'yyyy-mm-dd hh24:mi:ss');
tmpVar := 1;
end;
else
tmpVar := 0;
end if;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
begin
-- Consider logging the error and then re-raise
tmpVar := 0;
RETURN tmpVar;
RAISE;
end;END is_date;
/
2、查询日期不对的sql:
select ×
from table
where is_date(substr(key_date_str,7,8)) = 0