【问题标题】:Oracle occi - timestamp from unix timeOracle occi - 来自 unix 时间的时间戳
【发布时间】:2019-07-14 11:37:10
【问题描述】:

我有一个带有 TIMESTAMP(6) 列的 Oracle 数据库后端

我正在尝试使用 occi 在此列中插入一个值。显然,该值必须使用setTimestamp() 方法设置,该方法接受occi Timestamp 类来绑定值。

但是,我的值是一个 unix 时间戳,Timestamp 类似乎缺乏任何逻辑来促进从时间戳创建,它在构造函数中只接受小时、分钟...等。

真的没有更简单的方法吗?我真的必须编写自己的逻辑来获取Timestamp 类的实例吗?

顺便说一下,我无法在数据库端进行此时间戳转换 - 性能原因。

【问题讨论】:

  • 你能不能把你的 epoch 值转换成 tm 结构,然后在 Timestamp 构造函数中使用它的组件?还是您不满意的额外逻辑/步骤? (很好奇为什么你会在数据库方面遇到性能问题,因为它相当简单,但这是题外话...... *8-)
  • 这主要是我对是的不满意的额外步骤。想知道是否有“好”的解决方案。将在大量表中插入大量的值/秒,所以我宁愿推迟任何我可以在其他地方使用的逻辑,因为我必须将这个推销给 DBA 并说服他们它不会破坏他们的服务器 :)

标签: oracle oracle11g unix-timestamp occi


【解决方案1】:

OracleoffersfromText 方法:

fromText() 此方法从字符串中设置时间戳值。该字符串应采用指定的格式。如果指定了 nlsParam,这将确定要用于转换的 nls 参数。如果未指定 nlsParam,则从已传递的环境中获取 nls 参数。如果未传递环境,则从与实例关联的环境中获取 NLS 参数(如果有)。

语法 void fromText(const string &timestmpStr, const string &fmt, const string &nlsParam = "", const Environment *env = NULL)

参数:

  • timestmpStr 输入字符串
  • fm 格式字符串
  • nlsParam 语言名称(当前支持英语和美国)
  • 将使用其 nls 参数的 env 环境。

这可以使它更简洁一些,因为如果您已经将日期作为字符串,您可以使用字符串,或者如果您正在使用它,可以从 tm 结构中创建一个

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 2011-03-23
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2021-02-12
    相关资源
    最近更新 更多