将不同类型和格式的时间数据,构造或转换为以微秒为单位用BIGINT类型表示的时间值。
命令格式
TO_TIME函数支持以下四种签名格式,请根据不同使用需求选择不同的函数签名。
签名1:将时间格式的String类型输入value,按照指定的format格式解析,并返回以微秒为单位用BIGINT类型表示的时间值。
BIGINT TO_TIME(STRING <value>, STRING <format>)
签名2:使用代表时、分、秒的BIGINT数据,构造以微秒为单位用BIGINT类型表示的时间值。
BIGINT TO_TIME(BIGINT <hour>, BIGINT <minute>, BIGINT <second>)
签名3:将TIMESTAMP类型数据转换为指定时区的时间值,并返回以微秒为单位用BIGINT类型表示的时间值。
BIGINT TO_TIME(TIMESTAMP <timestamp>[, STRING <time_zone>])
签名4:将TIMESTAMP_NTZ类型数据转换为以微秒为单位用BIGINT类型表示的时间值。
BIGINT TO_TIME(TIMESTAMP_NTZ <timestamp_ntz>)
参数说明
参数 | 描述 |
value | 必填,STRING类型,待转换的时间值,例如 |
format | 必填,STRING类型。待解析value的时间格式。待解析的时间字符串value中,每个时间元素都必须有对应的格式元素。例如:15:20对应 format目前支持的时间部分的格式元素如下:
示例: |
hour | 必填,BIGINT类型,待转换时间的小时。 |
minute | 必填,BIGINT类型,待转换时间的分钟。 |
second | 必填,BIGINT类型,待转换时间的秒。 |
timestamp | 必填,TIMESTAMP类型,待转换的时间戳值。 |
time_zone | 可选,STRING类型,用来指定时区, 若未指定时区,则默认为当前Session/Project的时区。时区详情请参见时区列表。 说明 若您未修改过项目时区,则默认为东八区(UTC+08:00)。 |
timestamp_ntz | 必填,TIMESTAMP_NTZ类型,待转换的无时区时间戳值。 |
返回值说明
返回BIGINT类型。默认以微秒为单位表示时间值,返回规则如下:
当入参为TIMESTAMP或TIMESTAMP_NTZ类型时,去除其日期值和纳秒部分,返回结果的时间单位为微秒。
当参数value、timestamp或timestamp_ntz的值为NULL时,返回报错。
当参数hour、minute或second的值为NULL时,返回NULL。
当参数format格式不合法,或者值为NULL时,返回NULL。
使用示例
示例1:TO_TIME(STRING <value>, STRING <format>)
--format不合法,返回 NULL
SELECT TO_TIME('13:24:33','%h:%m:%s');
--返回 48273000000
SELECT TO_TIME('13:24:33','%H:%M:%S');
--返回 46860000000
SELECT TO_TIME('13:01:00','hh:mi:ss');
--返回 46860000000
SELECT TO_TIME('13:01','hh:mi');
--返回 781000000
SELECT TO_TIME('13:01','mi:ss');
--返回 781123000
SELECT TO_TIME('13:01.123','mi:ss.ff3');
--返回 NULL
SELECT TO_TIME('13:24:33', NULL );
--返回 48273123456
SELECT TO_TIME('13:24:33.123456','%H:%M:%E6S');
--返回 48273123456
SELECT TO_TIME('13:24:33.123456','%H:%M:%E*S');
示例2:TO_TIME(BIGINT <hour>, BIGINT <minute>, BIGINT <second>)
任一参数为NULL时,返回NULL。
--返回 55800000000
SELECT TO_TIME(15,30,00);
--返回 NULL
SELECT TO_TIME(15,30);
--返回 NULL
SELECT TO_TIME(15,30, NULL);
示例3:TO_TIME(TIMESTAMP <timestamp>[, STRING <time_zone>])
将TIMESTAMP类型数据转换为指定时区的时间值,并以微秒为单位返回BIGINT类型的时间值。
--当前Project时区为Asia/Shanghai
--返回 55801123000
SELECT TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123');
--返回 15:30:01.123,使用format_time将to_time的返回结果转换为STRING类型时间值 15:30:01.123
SELECT FORMAT_TIME(TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123'),"%H:%M:%S.ff3");
--指定时区为Asia/Shanghai,返回 55801123000
SELECT TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123', 'Asia/Shanghai');
--指定时区为Asia/Tokyo,返回 59401123456
SELECT TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123456', 'Asia/Tokyo');
--指定时区为Asia/Bangkok,返回 52201123456
SELECT TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123456789', 'Asia/Bangkok');
示例4:TO_TIME(TIMESTAMP_NTZ <timestamp_ntz>)
--返回 55801123456
SELECT TO_TIME(TIMESTAMP_NTZ '2019-09-01 15:30:01.123456789');
相关函数
TO_TIME函数属于时间函数,更多时间计算、时间转换的相关函数请参见日期与时间函数。