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

日期列格式转换:将'dd-mmm-yyy'转'yyyy-mm-dd'时format_date报错

解决方案

问题出在直接用format_date处理字符串日期——该函数要求输入是日期类型而非未解析的字符串,且你的日期格式(dd-mmm-yy)不符合默认解析规则,因此触发报错。正确流程是先将字符串解析为日期类型,再重新格式化。

不同工具的实现示例

1. BigQuery SQL

SELECT FORMAT_DATE('%Y-%m-%d', PARSE_DATE('%d-%b-%y', date_column)) AS formatted_date
FROM your_table
  • PARSE_DATE('%d-%b-%y', date_column):将dd-mmm-yy格式的字符串解析为日期类型,%b匹配三位字母月份(不区分大小写),%y匹配两位年份
  • FORMAT_DATE('%Y-%m-%d', ...):将解析后的日期转为yyyy-mm-dd格式

2. PySpark

from pyspark.sql.functions import to_date, date_format

df = df.withColumn(
    "formatted_date",
    date_format(to_date("date_column", "dd-MMM-yy"), "yyyy-MM-dd")
)
  • to_date("date_column", "dd-MMM-yy"):按指定格式解析字符串为日期
  • date_format(...):将日期转为目标格式

3. PostgreSQL

SELECT TO_CHAR(TO_DATE(date_column, 'DD-Mon-YY'), 'YYYY-MM-DD') AS formatted_date
FROM your_table
  • TO_DATE(date_column, 'DD-Mon-YY'):解析字符串为日期
  • TO_CHAR(..., 'YYYY-MM-DD'):格式化日期为目标字符串

注意事项

  • 两位年份补全规则:多数工具默认将00-69映射为2000-2069,70-99映射为1970-1999,若需自定义年份映射需额外处理
  • 月份大小写:%b(SQL)或MMM(Spark)不区分大小写,无需单独转换月份字母的大小写

内容的提问来源于stack exchange,提问作者Connor Hill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:54:56