开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

DataWorks这种带AM/PM的时间,maxcomputer如何转换?

DataWorks这种带AM/PM的时间,maxcomputer如何转换?image.png

展开
收起
真的很搞笑 2024-06-17 14:57:17 55 0
2 条回答
写回答
取消 提交回答
  • 参考
    https://help.aliyun.com/zh/maxcompute/user-guide/date-functions?spm=a2c4g.11186623.0.i0 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2024-06-17 20:06:43
    赞同 1 展开评论 打赏
  • 在MaxCompute中,要将带有AM/PM格式的时间字符串(如'06 20 2023 2:40AM')转换为标准日期时间格式,可以使用内置的日期时间函数进行处理。下面是一个示例SQL片段,演示如何进行这样的转换:

    SELECT 
        CONCAT(
            SUBSTR('06 20 2023 2:40AM', 4, 2),  -- 年份
            '-',
            SUBSTR('06 20 2023 2:40AM', 1, 2),  -- 月份
            '-',
            SUBSTR('06 20 2023 2:40AM', 8, 2),  -- 日
            ' ',
            CASE 
                WHEN SUBSTR('06 20 2023 2:40AM', -2, 2) = 'PM' AND SUBSTR('06 20 2023 2:40AM', 9, 2) != '12' THEN CONCAT(CAST(SUBSTR('06 20 2023 2:40AM', 9, 2) AS INT) + 12, SUBSTR('06 20 2023 2:40AM', 11, 2))
                ELSE SUBSTR('06 20 2023 2:40AM', 9, 5)
            END
        ) AS standardized_time,
        TO_TIMESTAMP(
            CONCAT(
                SUBSTR('06 20 2023 2:40AM', 4, 2),  -- 年份
                '-',
                SUBSTR('06 20 2023 2:40AM', 1, 2),  -- 月份
                '-',
                SUBSTR('06 20 2023 2:40AM', 8, 2),  -- 日
                ' ',
                CASE 
                    WHEN SUBSTR('06 20 2023 2:40AM', -2, 2) = 'PM' AND SUBSTR('06 20 2023 2:40AM', 9, 2) != '12' THEN CONCAT(CAST(SUBSTR('06 20 2023 2:40AM', 9, 2) AS INT) + 12, SUBSTR('06 20 2023 2:40AM', 11, 2))
                    ELSE SUBSTR('06 20 2023 2:40AM', 9, 5)
                END
            ), 
            'yyyy-MM-dd HH:mm'
        ) AS timestamp_converted
    FROM dual;
    

    这段SQL做了以下操作:

    • 分解原始时间字符串,提取出年、月、日、小时和分钟部分。
    • 使用CASE语句判断时间是AM还是PM,并相应地调整小时数(如果是PM且小时不是12,则加12)。
    • 使用CONCAT函数重新组合成符合yyyy-MM-dd HH:mm格式的字符串。
    • 最后,使用TO_TIMESTAMP函数将重组后的字符串转换为MaxCompute的TIMESTAMP类型,以便于在数据库中进行日期时间相关的操作和比较。
    2024-06-17 17:32:08
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关电子书

更多
DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载
基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载