我有一张桌子,我想根据YYYYMMDD,HH24MISS
检查记录的日期时间格式。如果我的记录的日期时间格式不正确,请写一条错误消息。如何在PL / SQL中创建函数或过程?
答案 0 :(得分:1)
您可以编写如下函数:
CREATE OR REPLACE FUNCTION CheckDateString(str IN VARCHAR2) RETURN DATE IS
BEGIN
RETURN TO_DATE(str,'YYYYMMDD,HH24MISS');
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END CheckDateString;
并像这样使用
SELECT *
FROM my_table
WHERE CheckDateString(DATE_STRING) IS NULL
AND DATE_STRING IS NOT NULL;
当然,下一个操作点是更正错误的值并将此列的数据类型更改为DATE
,分别为。 TIMESTAMP
。
答案 1 :(得分:1)
如果您的列是VARCHAR2,并且您需要检查其中的值是否可以使用所需的格式转换为日期,这可能是一个解决方案:
declare
v_foo_date date;
begin
for r_date in (
select date_col from my_table
) loop
begin
v_foo_date := to_date(r_date.date_col, 'YYYYMMDD,HH24MİSS');
exception when others then
dbms_output.put_line('error in validating value ' || r_date.date_col);
end;
end loop;
end;
答案 2 :(得分:0)
如果您想获得具有所需格式的数据,也许您可以这样做: 否则我会和Wernfried Domscheit一起回答。
将日期作为日期时间从表
投出 select *, cast(yourDateColumn as datetime) as verifiedDate
into #tempTable
from yourTable
然后根据yourTable
#tempTable
的数据
select * from yourTable yt
inner join #tempTable tt on
yt.yourDateColum = tt.verifiedDate and yt.ID = tt.ID