全部產品
Search
文件中心

MaxCompute:日期資料格式轉換:STRING、TIMESTAMP、DATETIME互相轉換

更新時間:Jun 19, 2024

本文為您介紹STRING、TIMESTAMP與DATETIME類型資料間的轉換方法,協助您在實際業務處理過程中,快速對標找到合適的日期轉換方法,提升業務處理效率。

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函數的命令樣本如下。
      --返回NULL。輸入資料格式不滿足要求。必須為yyyy-mm-dd hh:mi:ss格式。
      select cast('2009-07-01' as datetime);
    • 樣本4:錯誤使用TO_DATE函數的命令樣本如下。
      --返回NULL。輸入資料格式不滿足要求。必須為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類型。為構造TIMESTAMP類型資料,總共需要使用2次CAST函數。命令樣本如下。
      --返回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類型。為構造TIMESTAMP類型資料,需要使用到1次CAST函數。命令樣本如下。
      --返回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類型。為構造TIMESTAMP類型資料,總共需要使用2次CAST函數。命令樣本如下。
      --返回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類型。為構造TIMESTAMP類型資料,需要使用到1次CAST函數。命令樣本如下。
      --返回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類型。為構造DATETIME類型資料,需要使用到1次GETDATE函數。命令樣本如下。
    --返回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類型。為構造DATETIME類型資料,需要使用到1次GETDATE函數。命令樣本如下。
      --返回2021-10-14 10:21:47。
      select cast(getdate() as string);
    • 樣本2:使用TO_CHAR函數,將DATETIME類型的日期值轉換為指定格式的STRING類型。為構造DATETIME類型資料,需要使用到1次GETDATE函數。命令樣本如下。
      --返回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');