写点什么

YashanDB TO_TIMESTAMP 函数

作者:YashanDB
  • 2025-08-08
    广东
  • 本文字数:3781 字

    阅读完需:约 12 分钟

TO_TIMESTAMP 函数将expr的值转换为 TIMESTAMP 类型数据,返回值格式为 TIMESTAMP 类型的默认格式。

expr

expr 的值须为字符型,且其内容须符合 format 格式,否则返回格式转换错误。

当 expr 的值为 NULL 时,函数返回 NULL。

DEFAULT replace_expr ON CONVERSION ERROR

表示当对 expr 转换失败时,使用 replace_expr 值来进行转换,replace_expr 为一个字符串字面量,其内容须符合 format 格式。

示例

SELECT TO_TIMESTAMP('13-21' DEFAULT '2-13' ON CONVERSION ERROR,'mm-dd') res FROM DUAL;RES                                            ----------------------------------------------------------------2022-02-13 00:00:00.000000
复制代码

Copied!

format

format 用于指定 expr 的时间格式,其值须为字符型,可省略,省略则默认 expr 格式同 TIMESTAMP 类型的默认格式。

如果 format 中未指定年,则获取当前年份然后填充;如果不存在月,则获取当前月份然后填充;如果不存在日,则用 1 来填充;未指定时间则用 0 来填充。

YashanDB 支持不含连接字符的 expr 与 format 进行匹配,该匹配须遵循如下规则:

  • expr 中数字会按照 format 指定的格式进行转换,建议输入相同长度的数字和转换格式,否则可能导致结果错误。

  • format 中不能指定为可变长度的转换格式,如 MONTH、DAY。

指定转换的格式,包括如下字符组合:

  • 年年份数字:YYYYYYYYYY

  • 月月份数字:MM月份全称:MONTH月份缩写:MON

  • 日日期数字:DD

  • 日期描述一周中的一天全称(SUNDAY-SATURDAY):DAY一周中的一天数字(1-7):D一年中的一天(1-366):DDD

  • 时 24 小时制小时:HH2412 小时制小时:HHHH12

  • 分分钟数:MI

  • 秒秒数:SS

  • 儒略日儒略日计数:J

  • 连接字符::-、 /、 .、 ,、 ;、 \、 _、 、 [、 ]:-、 /、 .、 ,、 ;、 \、 _ 、 、 [、 ]:连接符之间可以相互匹配:空格可不参与匹配

Note

日期描述类格式须与年月日格式同时指定,且 expr 中日期描述须与年月日匹配,否则返回错误。

其中对于年格式的指定存在如下转换规则:

示例

SELECT TO_TIMESTAMP('2','hh') timestamp1,TO_TIMESTAMP(TO_CHAR(SYSDATE)) timestamp2 FROM DUAL;TIMESTAMP1                   TIMESTAMP2                  ---------------------------- ----------------------------2022-01-01 02:00:00.000000   2022-01-09 00:00:00.000000
SELECT TO_TIMESTAMP('2020-01-01-02','YYYY-MM-DD-HH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
SELECT TO_TIMESTAMP( '2020-01-01,1','YYYY-MM-DD,DDD' ) res FROM DUAL;RES-------------------------------- 2020-01-01 00:00:00.000000
--日期描述与输入的日期不匹配时返回错误SELECT TO_TIMESTAMP( '2020-01-01,6','YYYY-MM-DD,DDD' ) res FROM DUAL;[1:22]YAS-00008 type convert error : not a valid day
--不含连接字符的exprSELECT TO_TIMESTAMP('2020010102','YYYY-MM-DD-HH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
SELECT TO_TIMESTAMP('2020010102','YYYYMMDDHH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
--不含连接字符的expr,数字与转换格式长度不相同可能导致错误。本例中26为年份,06为月份,21为日期,02为小时。SELECT TO_TIMESTAMP('26062102','YYY-MM-DD-HH') res FROM DUAL;[1:21]YAS-00008 type convert error : not a valid month
--不含连接字符的expr,format中不能为可变长度的转换格式SELECT TO_TIMESTAMP('2020010102','YYYY-MONTH-DD-HH') res FROM DUAL;[1:21]YAS-00008 type convert error : literal does not match format string
SELECT TO_TIMESTAMP('20602','DDD-HH') res FROM DUAL;
复制代码

Copied!

nls_calendar

指定数据库使用的日历系统,仅支持为字符串类型,默认值为 gregorian。

目前 YashanDB 仅支持 gregorian 日历系统。

示例

SELECT TO_TIMESTAMP('2020010102','YYYYMMDDHH', 'nls_calendar = gregorian') res FROM DUAL;RES----------------------------------------------------------------2020-01-01 02:00:00.000000
复制代码

代码

to_timestamp::= TO_TIMESTAMP "("expr [DEFUALT replace_expr ON CONVERSION ERROR] ["," format] ")"
复制代码

TO_TIMESTAMP 函数将expr的值转换为 TIMESTAMP 类型数据,返回值格式为 TIMESTAMP 类型的默认格式。

expr

expr 的值须为字符型,且其内容须符合 format 格式,否则返回格式转换错误。

当 expr 的值为 NULL 时,函数返回 NULL。

DEFAULT replace_expr ON CONVERSION ERROR

表示当对 expr 转换失败时,使用 replace_expr 值来进行转换,replace_expr 为一个字符串字面量,其内容须符合 format 格式。

示例

SELECT TO_TIMESTAMP('13-21' DEFAULT '2-13' ON CONVERSION ERROR,'mm-dd') res FROM DUAL;RES                                            ----------------------------------------------------------------2022-02-13 00:00:00.000000
复制代码

Copied!

format

format 用于指定 expr 的时间格式,其值须为字符型,可省略,省略则默认 expr 格式同 TIMESTAMP 类型的默认格式。

如果 format 中未指定年,则获取当前年份然后填充;如果不存在月,则获取当前月份然后填充;如果不存在日,则用 1 来填充;未指定时间则用 0 来填充。

YashanDB 支持不含连接字符的 expr 与 format 进行匹配,该匹配须遵循如下规则:

  • expr 中数字会按照 format 指定的格式进行转换,建议输入相同长度的数字和转换格式,否则可能导致结果错误。

  • format 中不能指定为可变长度的转换格式,如 MONTH、DAY。

指定转换的格式,包括如下字符组合:

  • 年年份数字:YYYYYYYYYY

  • 月月份数字:MM月份全称:MONTH月份缩写:MON

  • 日日期数字:DD

  • 日期描述一周中的一天全称(SUNDAY-SATURDAY):DAY一周中的一天数字(1-7):D一年中的一天(1-366):DDD

  • 时 24 小时制小时:HH2412 小时制小时:HHHH12

  • 分分钟数:MI

  • 秒秒数:SS

  • 儒略日儒略日计数:J

  • 连接字符::-、 /、 .、 ,、 ;、 \、 _、 、 [、 ]:-、 /、 .、 ,、 ;、 \、 _ 、 、 [、 ]:连接符之间可以相互匹配:空格可不参与匹配

Note

日期描述类格式须与年月日格式同时指定,且 expr 中日期描述须与年月日匹配,否则返回错误。

其中对于年格式的指定存在如下转换规则:

示例

SELECT TO_TIMESTAMP('2','hh') timestamp1,TO_TIMESTAMP(TO_CHAR(SYSDATE)) timestamp2 FROM DUAL;TIMESTAMP1                   TIMESTAMP2                  ---------------------------- ----------------------------2022-01-01 02:00:00.000000   2022-01-09 00:00:00.000000
SELECT TO_TIMESTAMP('2020-01-01-02','YYYY-MM-DD-HH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
SELECT TO_TIMESTAMP( '2020-01-01,1','YYYY-MM-DD,DDD' ) res FROM DUAL;RES-------------------------------- 2020-01-01 00:00:00.000000
--日期描述与输入的日期不匹配时返回错误SELECT TO_TIMESTAMP( '2020-01-01,6','YYYY-MM-DD,DDD' ) res FROM DUAL;[1:22]YAS-00008 type convert error : not a valid day
--不含连接字符的exprSELECT TO_TIMESTAMP('2020010102','YYYY-MM-DD-HH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
SELECT TO_TIMESTAMP('2020010102','YYYYMMDDHH') res FROM DUAL;RES ---------------------------------------------------------------- 2020-01-01 02:00:00.000000
--不含连接字符的expr,数字与转换格式长度不相同可能导致错误。本例中26为年份,06为月份,21为日期,02为小时。SELECT TO_TIMESTAMP('26062102','YYY-MM-DD-HH') res FROM DUAL;[1:21]YAS-00008 type convert error : not a valid month
--不含连接字符的expr,format中不能为可变长度的转换格式SELECT TO_TIMESTAMP('2020010102','YYYY-MONTH-DD-HH') res FROM DUAL;[1:21]YAS-00008 type convert error : literal does not match format string
SELECT TO_TIMESTAMP('20602','DDD-HH') res FROM DUAL;
复制代码

Copied!

nls_calendar

指定数据库使用的日历系统,仅支持为字符串类型,默认值为 gregorian。

目前 YashanDB 仅支持 gregorian 日历系统。

示例

SELECT TO_TIMESTAMP('2020010102','YYYYMMDDHH', 'nls_calendar = gregorian') res FROM DUAL;RES----------------------------------------------------------------2020-01-01 02:00:00.000000
复制代码


用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB TO_TIMESTAMP函数_YashanDB_InfoQ写作社区