You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI、Excel、PostgreSQL中保留正确格式并转换异常日期?

解决方案

Excel

使用带错误处理的条件公式,仅转换含-分隔符的异常日期,正确日期保持不变:

=IFERROR(IF(ISNUMBER(SEARCH("-", I2)), DATE(RIGHT(I2,4), MID(I2, SEARCH("-",I2)+1, 2), LEFT(I2, SEARCH("-",I2)-1)), I2), I2)
  • 逻辑:先检查单元格是否包含-,是则拆分日、月、年字段,通过DATE函数生成标准日期;不是则直接返回原内容;IFERROR处理格式不规范的异常情况,避免返回错误值。

Power BI

在Power Query编辑器中通过自定义列实现精准转换:

  1. 加载数据后进入Power Query编辑器
  2. 添加自定义列,输入以下M语言公式(替换[目标列]为实际列名):
if Text.Contains([目标列], "-") then Date.FromText([目标列], [Format="dd-MM-yyyy"]) else [目标列]
  1. 关闭并应用更改
  • 逻辑:仅对包含-的异常日期字符串按日-月-年格式转换为标准日期类型,已正确识别的日期内容保持原样。

PostgreSQL

利用CASE语句结合正则匹配,仅转换符合日-月-年格式的异常数据:

SELECT
  CASE
    -- 匹配dd-MM-yyyy格式的字符串
    WHEN your_column ~ '^\d{2}-\d{2}-\d{4}$' THEN TO_DATE(your_column, 'DD-MM-YYYY')::TEXT
    ELSE your_column
  END AS converted_date
FROM your_table;
  • 若原字段为日期类型,可调整为:
SELECT
  CASE
    WHEN your_column::TEXT ~ '^\d{2}-\d{2}-\d{4}$' THEN TO_DATE(your_column::TEXT, 'DD-MM-YYYY')
    ELSE your_column
  END AS converted_date
FROM your_table;
  • 逻辑:用正则筛选出XX-XX-XXXX格式的异常值,转换为标准日期后保持字段类型一致性,正确格式的日期直接保留。

内容的提问来源于stack exchange,提问作者Mark M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:53:22