本文介绍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函数时,输入的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类型。实现方法
使用示例
示例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)的日期值。实现方法
使用限制
使用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类型。实现方法
使用示例
示例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');