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

Oracle SQL 12.1:移除字符串中的可变时区及'at'子串

解决SQL中移除时间字符串里的字母字符(含'at'及时区)的问题

看起来你正在处理带at和时区标识的时间字符串,想要把它转换成纯日期+时间的规范格式对吧?我来给你一个更通用的解决方案,不用一个个枚举时区~

问题回顾

你需要把类似 05.04.2018 at 11:10:37 AEST 的字符串,处理成日期和时间仅用单个空格分隔的格式:05.04.2018 11:10:37,要移除at和所有时区标识(比如AEST、EST、AEDT这类),还要保证格式整洁没有多余空格。

通用解决方案

不用嵌套多次REGEXP_REPLACE也不用枚举所有时区,我们可以一步到位处理:

SELECT REGEXP_REPLACE(
    TRIM(REGEXP_REPLACE('05.04.2018 at 11:10:37 AEST', '[a-zA-Z]+', '')),
    ' +',
    ' '
) AS cleaned_datetime;

步骤解释

  1. 移除所有字母字符:用[a-zA-Z]+匹配所有大小写字母,替换为空。这一步会把at和时区的所有字母都删掉,原字符串变成05.04.2018 11:10:37 (注意中间有两个空格,末尾有一个空格)。
  2. 去除首尾空格:用TRIM()函数去掉字符串首尾的多余空格,得到05.04.2018 11:10:37。
  3. 合并中间多空格为单个:用' +'匹配一个或多个空格,替换成单个空格,最终就得到了格式规范的05.04.2018 11:10:37。

为什么这个方法更好?

  • 不用手动枚举所有时区(比如你原来写的EST|AEDT|AEST),不管是遇到PST、EDT还是其他时区标识,都能自动移除。
  • 自动处理过程中产生的多余空格,保证最终格式整洁。

测试案例

  • 输入:12.12.2023 at 09:05:00 EST → 输出:12.12.2023 09:05:00
  • 输入:01.01.2024 at 23:59:59 AEDT → 输出:01.01.2024 23:59:59

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:02:10