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

如何在SQL中从混合字符串转换日期时间值为指定格式

SQL实现字符串提取并转换为指定日期格式

以下针对常见SQL数据库给出解决方案,核心思路是先提取字符串中的日期时间片段,再转换为MM/DD/YYYY格式的日期值:

1. SQL Server

SELECT FORMAT(
    CAST(RIGHT(your_column, LEN(your_column) - CHARINDEX(':', your_column, CHARINDEX(':', your_column, CHARINDEX(':', your_column, CHARINDEX(':', your_column, CHARINDEX(':', your_column, 1)+1)+1)+1)+1)) AS DATETIME),
    'MM/dd/yyyy'
) AS formatted_date
FROM your_table;

通过多次嵌套CHARINDEX定位最后一个冒号的位置,截取冒号后的日期时间内容,转换为DATETIME类型后用FORMAT输出指定格式。

若使用SQL Server 2016及以上版本,也可通过正则简化:

SELECT FORMAT(
    CAST(REGEXP_SUBSTR(your_column, ':[0-9/]+ [0-9:]+ [APM]+$', 1, 1, '', 1) AS DATETIME),
    'MM/dd/yyyy'
) AS formatted_date
FROM your_table;

2. MySQL

SELECT DATE_FORMAT(
    STR_TO_DATE(SUBSTRING_INDEX(your_column, ':', -1), '%m/%d/%Y %h:%i:%s %p'),
    '%m/%d/%Y'
) AS formatted_date
FROM your_table;

用SUBSTRING_INDEX直接截取最后一个冒号后的内容,通过STR_TO_DATE转换为日期类型,再用DATE_FORMAT格式化输出目标样式。

3. Oracle

SELECT TO_CHAR(
    TO_DATE(REGEXP_SUBSTR(your_column, ':\d+/\d+/\d+ \d+:\d+:\d+ [APM]+$', 1, 1, NULL, 2), 'MM/DD/YYYY HH:MI:SS AM'),
    'MM/DD/YYYY'
) AS formatted_date
FROM your_table;

通过REGEXP_SUBSTR提取冒号后的日期时间片段,TO_DATE转换为日期类型,最后用TO_CHAR输出指定格式。

4. PostgreSQL

SELECT TO_CHAR(
    TO_TIMESTAMP(SUBSTRING(your_column FROM ':\d+/\d+/\d+ \d+:\d+:\d+ [APM]+$')::TEXT, 'MM/DD/YYYY HH:MI:SS AM'),
    'MM/DD/YYYY'
) AS formatted_date
FROM your_table;

用SUBSTRING配合正则提取目标内容,TO_TIMESTAMP转换为时间戳类型,再通过TO_CHAR格式化日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:35