日期数据格式转换:STRING、TIMESTAMP、DATETIME互相转换

更新时间:
复制为 MD 格式

本文介绍STRING、TIMESTAMPDATETIME类型数据间的转换方法。

STRING转换为TIMESTAMP

  • 应用场景

    STRING类型数据转换为TIMESTAMP类型(格式为yyyy-mm-dd hh:mi:ss.ff3)的日期值。

  • 实现方法

    使用CAST函数转换。

  • 使用限制

    输入的STRING类型数据的格式至少要满足yyyy-mm-dd hh:mi:ss要求。

  • 使用示例

    • 示例1:使用CAST函数,将STRING类型数据2009-07-01 16:09:00转换为TIMESTAMP类型。命令示例如下。

      --返回2009-07-01 16:09:00.000。
      SELECT CAST('2009-07-01 16:09:00' AS TIMESTAMP);
    • 示例2:错误使用CAST函数的命令示例如下。

      --返回NULL。输入数据格式不满足要求。至少要包含yyyy-mm-dd hh:mi:ss格式。
      SELECT CAST('2009-07-01' AS TIMESTAMP);

STRING转换为DATETIME

  • 应用场景

    STRING类型数据转换为DATETIME类型(格式为yyyy-mm-dd hh:mi:ss)的日期值。

  • 实现方法

    • 方法一:使用CAST函数转换。

    • 方法二:使用TO_DATE函数转换。

  • 使用限制

    • 使用CAST函数时,输入的STRING类型数据的格式必须要满足yyyy-mm-dd hh:mi:ss要求。

    • 使用TO_DATE函数时,需要指定format参数的取值为yyyy-mm-dd hh:mi:ss

  • 使用示例

    • 示例1:使用CAST函数,将STRING类型数据2009-07-01 16:09:00转换为DATETIME类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT CAST('2009-07-01 16:09:00' AS DATETIME);
    • 示例2:使用TO_DATE函数,指定format参数,将STRING类型数据2009-07-01 16:09:00转换为DATETIME类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT TO_DATE('2009-07-01 16:09:00','yyyy-mm-dd hh:mi:ss');
    • 示例3:错误使用CAST函数的命令示例如下。

      --报错:ODPS-0121095:Invalid argument - in function cast, string datetime's format must be yyyy-mm-dd hh:mi:ss,  input string is:2009-07-01。
      --输入数据格式不满足要求。必须为yyyy-mm-dd hh:mi:ss格式。
      SELECT CAST('2009-07-01' AS DATETIME);
    • 示例4:错误使用TO_DATE函数的命令示例如下。

      --报错:ODPS-0121095:Invalid argument - in function to_date, format string does not match datetime string, datetime string value is '2009-07-01' and format string is 'yyyy-mm-dd hh:mi:ss'。
      --输入数据格式不满足要求。必须为yyyy-mm-dd hh:mi:ss格式。
      SELECT TO_DATE('2009-07-01','yyyy-mm-dd hh:mi:ss');

TIMESTAMP转换为STRING

  • 应用场景

    TIMESTAMP类型(格式为yyyy-mm-dd hh:mi:ss.ff3)的日期值转换为STRING类型。

  • 实现方法

    • 方法一:使用CAST函数转换。

    • 方法二:使用TO_CHAR函数按照format参数指定的格式转换。

  • 使用示例

    • 示例1:使用CAST函数,将TIMESTAMP类型数据2009-07-01 16:09:00转换为STRING类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT CAST(CAST('2009-07-01 16:09:00' AS TIMESTAMP) AS STRING);
    • 示例2:使用TO_CHAR函数,将TIMESTAMP类型数据2009-07-01 16:09:00转换为STRING类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT TO_CHAR(CAST('2009-07-01 16:09:00' AS TIMESTAMP),'yyyy-mm-dd hh:mi:ss');

TIMESTAMP转换为DATETIME

  • 应用场景

    TIMESTAMP类型(格式为yyyy-mm-dd hh:mi:ss.ff3)的日期值转换为DATETIME类型(格式为yyyy-mm-dd hh:mi:ss)的日期值。

  • 实现方法

    • 方法一:使用CAST函数转换。

    • 方法二:使用TO_DATE函数转换。

  • 使用限制

    使用TO_DATE函数时,需要指定format参数的取值为yyyy-mm-dd hh:mi:ss

  • 使用示例

    • 示例1:使用CAST函数,将TIMESTAMP类型数据2009-07-01 16:09:00转换为DATETIME类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT CAST(CAST('2009-07-01 16:09:00' AS TIMESTAMP) AS DATETIME);
    • 示例2:使用TO_DATE函数,指定format参数,将TIMESTAMP类型数据2009-07-01 16:09:00转换为DATETIME类型。命令示例如下。

      --返回2009-07-01 16:09:00。
      SELECT TO_DATE(CAST('2009-07-01 16:09:00' AS TIMESTAMP),'yyyy-mm-dd hh:mi:ss');

DATETIME转换为TIMESTAMP

  • 应用场景

    DATETIME类型(格式为yyyy-mm-dd hh:mi:ss)的日期值转换为TIMESTAMP类型(格式为yyyy-mm-dd hh:mi:ss.ff3)的日期值。

  • 实现方法

    使用CAST函数转换。

  • 使用示例

    使用CAST函数,将DATETIME类型的日期值转换为TIMESTAMP类型。命令示例如下。

    --返回2021-10-14 10:21:47.939。
    SELECT CAST(GETDATE() AS TIMESTAMP);

DATETIME转换为STRING

  • 应用场景

    DATETIME类型(格式为yyyy-mm-dd hh:mi:ss)的日期值转换为STRING类型。

  • 实现方法

    • 方法一:使用CAST函数转换。

    • 方法二:使用TO_CHAR函数按照format参数指定的格式转换。

  • 使用示例

    • 示例1:使用CAST函数,将DATETIME类型的日期值转换为STRING类型。命令示例如下。

      --返回2021-10-14 10:21:47。
      SELECT CAST(GETDATE() AS STRING);
    • 示例2:使用TO_CHAR函数,将DATETIME类型的日期值转换为指定格式的STRING类型。命令示例如下。

      --返回2021-10-14 10:21:47。
      SELECT TO_CHAR(GETDATE(),'yyyy-mm-dd hh:mi:ss');
      --返回2021-10-14。
      SELECT TO_CHAR(GETDATE(),'yyyy-mm-dd');
      --返回2021。
      SELECT TO_CHAR(GETDATE(),'yyyy');