Postgres SQL - 从字符字段中选择不一致的日期格式

时间:2015-06-12 03:28:53

标签: postgresql date format sqldatatypes

我遇到了日期格式问题,并希望有人可以帮助我!

我们的数据库有一个日期字段,由于导入源/格式不同,我们的编程团队将其格式化为字符字段。

我理想的目的是创建一个仅以日期结束的视图,然后我将在报告工具(dbxtra)中使用每日/每月分组的数据和报告。

示例数据:

" 2015年5月30日"

" 3/06/2015 12:00 AM"

我试过了:

  • 使用:: date

  • 转换为日期
  • substr取前10个字符

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我会为此编写一个存储过程,您可以在sql查询中调用它。像这样的东西(伪代码):

CREATE OR REPLACE FUNCTION convertMessedUpStringsToDate(i_val1 varchar) RETURNS timestamp
declare 
  retval timestamp;
  formatArray varchar[];
begin
  -- build array with possible formats, most used in front
  formatArray[0] = 'YYYY-MM-DD';
  formatArray[1] = 'DD/MM/YYYY HH12:MI AM';

  for i in 0 .. formatArray.count loop
    begin
      retval = to_timestamp(i_val, formatArray[i]);
    exception
      -- catch any exception and try the next format
    end;
  end loop;

  return retval;
end;

另一种选择是使用正则表达式解析输入并找到匹配的模式。无论如何,我希望你没有太多不同的模式。