---
title: from_unixtime 函数结果集不同-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于from_unixtime 函数结果集不同相关的常见问题和使用技巧，帮助您快速解决from_unixtime 函数结果集不同的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# from_unixtime 函数结果集不同

更新时间：2026-05-19 08:21

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题描述

使用 from_unixtime 函数，结果表现不同。

```shell
[root@xxx ][oceanbase]> select from_unixtime(1681784359471132/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit;
ERROR 4019 (HY000): Size overflow

```

trace 日志如下。

```shell
WARN  [LIB.TIME] data_fmt_nd (ob_time_convert.cpp:2903) [93814][1280][xxxxx-xxxxx] [lt=7] [dc=0] expected length is little(ret=-4019, n=4, ffi.length()=5, ffi.str()="55050")
WARN  [SQL.ENG] eval_fromtime_normal (ob_expr_from_unix_time.cpp:388) [93814][1280][xxxxx-xxxxx]] [lt=12] [dc=0] failed to convert str(ret=-4019)
WARN  [SQL.PC] pre_calculation (ob_cache_object.cpp:215) [93814][1280][xxxxx-xxxxx] [lt=5] [dc=0] failed to to eval(ret=-4019)
WARN  [SQL.PC] pre_calc_exprs (ob_plan_set.cpp:984) [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] failed to pre calculate(ret=-4019)
WARN  [SQL.PC] match_params_info (ob_plan_set.cpp:171) [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] pre calculate exprs failed(ret=-4019)
WARN  [SQL.PC] choose_plan (ob_plan_cache_value.cpp:383) [93814][1280][xxxxx-xxxxx][lt=3] [dc=0] fail to match params info(ret=-4019)
WARN  [SQL.PC] get_cache_obj (ob_plan_cache.cpp:439) [93814][1280][xxxxx-xxxxx][lt=3] [dc=0] pcv_set fail to get plan(ret=-4019)
WARN  [SQL] execute_get_plan (ob_sql.cpp:3142) [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] fail to get physical plan(ret=-4019)
WARN  [LIB.TIME] data_fmt_nd (ob_time_convert.cpp:2903) [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] expected length is little(ret=-4019, n=4, ffi.length()=5, ffi.str()="55050")
WARN  [SQL.ENG] eval_fromtime_normal (ob_expr_from_unix_time.cpp:388) [93814][1280][xxxxx-xxxxx] [lt=9] [dc=0] failed to convert str(ret=-4019)
WARN  [SQL.PC] pre_calculation (ob_cache_object.cpp:215) [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] failed to to eval(ret=-4019)
WARN  [SQL] calc_pre_calculable_exprs (ob_sql.cpp:4389) [93814][1280][xxxxx-xxxxx] [lt=3] [dc=0] failde to pre calculate exprs(ret=-4019)
WARN  [SQL] calc_pre_calculable_exprs (ob_sql.cpp:2211) [93814][1280][xxxxx-xxxxx] [lt=3] [dc=0] failed to generate and calcute rt exprs(ret=-4019, calculable_exprs=[{hidden_idx:0}, {hidden_idx:1}, {hidden_idx:2}, {hidden_idx:3}])
WARN  [SQL] calc_pre_calculable_exprs (ob_sql.cpp:2158) [93814][1280][xxxxx-xxxxx] [lt=6] [dc=0] Failed to calc pre cacluable exprs
WARN  [SQL] generate_physical_plan (ob_sql.cpp:2061) [93814][1280][xxxxx-xxxxx][lt=5] [dc=0] Failed to deal pre calculable exprs(ret=-4019)
WARN  [SQL] handle_physical_plan (ob_sql.cpp:4017) [93814][1280][xxxxx-xxxxx] [lt=3] [dc=0] Failed to generate plan(ret=-4019, result.get_exec_context().need_disconnect()=false)
WARN  [SQL] handle_text_query (ob_sql.cpp:1567) [93814][1280][xxxxx-xxxxx] [lt=5] [dc=0] fail to handle physical plan(ret=-4019)
WARN  [SQL] stmt_query (ob_sql.cpp:190) [93814][1280][xxxxx-xxxxx] [lt=3] [dc=0] fail to handle text query(stmt=select from_unixtime(1675059670416255/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit, ret=-4019)
WARN  [SERVER] test_and_save_retry_state (ob_query_retry_ctrl.cpp:528) [93814][1280][xxxxx-xxxxx] [lt=6] [dc=0] do not need retry(client_ret=-4019, err=-4019, expected_stmt=true, THIS_WORKER.get_timeout_ts()=1675061845721989, retry_type_=0, result.get_stmt_type()=1, result.get_exec_context().need_change_timeout_ret()=true, session->get_retry_info().get_last_query_retry_err()=0)
INFO  [SERVER] ob_query_retry_ctrl.cpp:555 [93814][1280][xxxxx-xxxxx] [lt=8] [dc=0] check if need retry(client_ret=-4019, err=-4019, retry_type_=0, retry_times=1, multi_stmt_item={is_part_of_multi_stmt:true, seq_num:0, sql:"select from_unixtime(1675059670416255/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit"})
WARN  [SERVER] do_process (obmp_query.cpp:726) [93814][1280][xxxxx-xxxxx] [lt=5] [dc=0] run stmt_query failed, check if need retry(ret=-4019, cli_ret=-4019, retry_ctrl_.need_retry()=0, sql=select from_unixtime(1675059670416255/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit)
WARN  [SERVER] do_process (obmp_query.cpp:853) [93814][1280][xxxxx-xxxxx] [lt=7] [dc=0] query failed(ret=-4019, retry_ctrl_.need_retry()=0)
INFO  [SERVER] obmp_base.cpp:1221 [93814][1280][xxxxx-xxxxx] [lt=4] [dc=0] sending error packet(err=-4019, bt="0xa0c9718 0xa0adbd9 0x6ea71c2 0x28c8199 0x28c4bb9 0x28c03e6 0x28be2fb 0x28b9584 0x73aa4ea 0x3214267 0x9edbd96 0x9ed907f 0x9ed46ae", extra_err_info=0x7fd3ab6bf8e8)
TRACE [TRACE]obmp_base.cpp:1742 [93814][1280][xxxxx-xxxxx] [lt=7] [dc=0] [show trace](TRACE=begin_ts=xxxxx xxxx-xx-xx xx:xx:xx.xxxxx|[process_begin] u=0 in_queue_time:16, receive_ts:xxxxx, enqueue_ts:xxxxx|[start_sql] u=1 addr:{ip:"xx.xx.xx.xx", port:xxxxx}|[query_begin] u=1 trace_id:xxxxx-xxxxx|[before_processor_run] u=6 |[session] u=5 sid:xxxxx, tenant_id:1|[parse_begin] u=36 stmt:"select from_unixtime(xxxxx/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit", stmt_len:81|[cache_get_plan_begin] u=6 |[pc_choose_plan] u=145 |[cache_get_plan_end] u=5 |[transform_with_outline_begin] u=1 |[pc_fast_parse_start] u=61 |[pc_fast_parse_end] u=5 |[transform_with_outline_end] u=10 |[resolve_begin] u=24 |[resolve_end] u=1809 |[query_end] u=365 |total_timeu=2480)
WARN  [SERVER] process (obmp_query.cpp:320) [93814][1280][xxxxx-xxxxx] [lt=9] [dc=0] fail execute sql(sql_id="", sql=select from_unixtime(xxxxx/1000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit, sessid=xxxxx, ret=-4019, ret="OB_SIZE_OVERFLOW", need_disconnect=false)

```

## 问题原因

1. request_time 的单位是微秒，from_unixtime 的参数单位是秒。使用 from_unixtime 对 request_time 进行转换时，需要将 request_time 除以 1000000。
 2. 当 fom_unixtime 函数的第一个参数超过 9999-12-31 23:59:59 对应的秒数，并且指定第二个参数 format 的值的时候，发生该报错。

## 适用版本

OceanBase 数据库 V2.x 和 V3.2.3 (oceanbase-3.2.3.0-20220418212020) 之前版本。

## 解决方法

- 使用正确的 SQL。

  ```shell
  obclient [oceanbase]> select from_unixtime(request_time/1000000,'%Y-%M-%D %H:%I:%S') from gv$sql_audit;

  ```
 - 理论上，如果 from_unixtime 的输入时间超过 9999-12-31 23:59:59，应该输出结果 NULL，而不是直接转换 string 导致报错。可以升级到问题已修复版本，OceanBase 数据库 V3.2.3 BP9 版本已修复该问题。

上一篇

[Oracle 模式下调用函数报错 ORA-00600: internal error code, arguments: -4007, Not supported feature or function](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000284433)

下一篇

[Oracle 模式下fmdd 和 fmmi 等不兼容问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209978) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
