如何查看我的约会格式?

时间:2015-11-10 11:58:27

标签: sql oracle date plsql

我有一张桌子,我想根据YYYYMMDD,HH24MISS检查记录的日期时间格式。如果我的记录的日期时间格式不正确,请写一条错误消息。如何在PL / SQL中创建函数或过程?

3 个答案:

答案 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一起回答。

  1. 将日期作为日期时间从表

    投出

    select *, cast(yourDateColumn as datetime) as verifiedDate into #tempTable from yourTable

  2. 然后根据yourTable

    中的数据检查#tempTable的数据

    select * from yourTable yt inner join #tempTable tt on yt.yourDateColum = tt.verifiedDate and yt.ID = tt.ID