检查 PostgreSQL 源中的日期是否有效

Art*_*kes 4 sql-server postgresql validation date

我有一个远程 PG 数据源,无法在其中创建自定义函数。我必须将 PG 数据转储到 MSSQL Server 2008 R2 上的 unicode 表中。我需要一个内联 PostgreSQL 语句,将无效日期替换为“1900-01-01”之类的内容。

我已经进行了广泛的谷歌搜索但无济于事......谢谢。

Mik*_*ll' 5

PostgreSQL 的时间戳范围比 SQL Server 的日期时间范围大得多。在 PostgreSQL 中,“0214-06-19 00:00:00”是有效的时间戳。“0214-06-19 00:00:00 BC”也是如此。

我不清楚结果应该是日期还是时间戳。但这显示了您应该如何解决 PostgreSQL 中的问题

with data (ts) as (
  values (timestamp '0214-06-19 00:00:00'), ('1900-01-01 08:00')
)
select 
    ts as source_ts, 
    case when ts < timestamp '1900-01-01' then timestamp '1900-01-01' 
         else ts 
    end as altered_ts
from data;
Run Code Online (Sandbox Code Playgroud)
源_ts 更改_ts
--
0214-06-19 00:00:00 1900-01-01 00:00:00
1900-01-01 08:00:00 1900-01-01 08:00:00

假设 1900 年之前的每个日期都应该是 1900-01-01 是有风险的。值“0214-06-19”可能是 2014-06-19 的拼写错误。