Reputation: 357
Is there any function in PostgreSQL
that returns Boolean
whether a given string is a date or not just like ISDATE()
in MSSQL?
ISDATE("January 1, 2014")
Upvotes: 18
Views: 34285
Reputation: 105
Checked is null date. Without creating a function, you can also. Var example = now()
select coalesce(extract(day from now()),'0') <> 0
Upvotes: 0
Reputation: 517
@ntalbs answer is good except in the case of NULL
values. I don't want is_date
to return true
if I pass it a NULL
value. This tweak gets around that issue:
create or replace function is_date(s varchar) returns boolean as $$
begin
if s is null then
return false;
end if;
perform s::date;
return true;
exception when others then
return false;
end;
$$ language plpgsql;
Upvotes: 2
Reputation: 29458
You can create a function:
create or replace function is_date(s varchar) returns boolean as $$
begin
perform s::date;
return true;
exception when others then
return false;
end;
$$ language plpgsql;
Then, you can use it like this:
postgres=# select is_date('January 1, 2014');
is_date
---------
t
(1 row)
postgres=# select is_date('20140101');
is_date
---------
t
(1 row)
postgres=# select is_date('20140199');
is_date
---------
f
(1 row)
Upvotes: 31