有没有办法检查字段是否能够转换为postgres中的时间戳

时间:2013-11-02 16:32:34

标签: postgresql

在T-SQL中,您可以执行以下操作:

Select from Table where dateField is Date = true;

在postgres中有没有办法做到这一点。具体地,

Select * from "Table" where to_timestamp("dateField", 'MM-DD-YYYY 24HH:MI') is Possible;

1 个答案:

答案 0 :(得分:2)

您不应该首先在varchar列中存储日期或时间戳(如果您不需要此解决方法)。

您可以轻松创建一个检查此功能的函数:

create or replace function is_date(to_test varchar, format varchar)
  returns boolean
  language plpgsql
as
$$
declare  
  temp_result timestamp;
begin 
  temp_result := to_timestamp(to_test, format);
  return true;
exception 
  when others then
    return false;
end;
$$

然后你可以像这样使用它:

Select 
from some_table 
where is_date(some_column, 'MM-DD-YYYY 24HH:MI');

您还可以扩展该功能以测试不同的日期/时间戳格式。

但避免这种情况的最佳方法是从头开始使用datetimestamp列。