【问题标题】:How to convert the format of inserted datetime in Informix?如何在 Informix 中转换插入日期时间的格式?
【发布时间】:2015-07-06 11:10:39
【问题描述】:

我以“6/4/2015 2:08:00 PM”的格式将日期/时间数据插入到 CHAR 列中。 我希望这应该自动转换为格式: '2015-06-04 14:08:00' 以便在查询中使用它,因为 DATETIME 的格式是 YYYY-MM-DD hh:mm:ss.fffff

如何转换?

【问题讨论】:

  • 当你说你“以格式插入我的日期时间:'6/4/2015 2:08:00 PM'”。这实际上是什么意思?您是否有包含该格式的 CHAR 或 VARCHAR 列?或者您是否有一个程序包含该格式的数据作为字符串,并且您想将其插入到 Informix DATETIME YEAR TO SECOND 列或其他内容中?您使用哪种语言?您可能需要查找TO_DATE 函数。
  • 我的表中有这种格式的数据。因此,当我运行查询以按日期获取特定数据时,我输入了这个日期,但它不接受它,因为它是 DATETIME 列。因此,我希望该用户将日期设置为 '6/4/2015 2:08:00 PM' 格式,并根据需要更改为 DATETIME 格式,然后实现查询。我只使用 Informix。如何使用 TO_DATE 函数?

标签: datetime informix


【解决方案1】:

鉴于您已以字符串格式(CHAR 或 VARCHAR)存储数据,您必须决定如何将其用作 DATETIME YEAR TO SECOND 值。为了计算效率和存储效率,最好将值存储为 DATETIME YEAR TO SECOND 值,将其转换为输入并(如有必要)重新转换为输出。但是,如果您经常在不进行计算(包括比较或排序)的情况下显示该值,那么依赖于洛可可语言环境的字符串表示法可能是可以的。

将字符串转换为 DATETIME 值的关键函数是 TO_DATE。您还需要查看 TO_CHAR 函数,因为它记录了您需要使用的格式代码,并且您将使用它来将 DATETIME 值转换为原始格式。

假设列名是time_string,那么你需要使用:

TO_DATE(time_string, '%m/%d/%Y %I:%M %x')  -- What goes in place of x?

转换为 DATETIME YEAR TO SECOND — 或者可能是 DATETIME YEAR TO MINUTE — 值(将根据需要通过 EXTEND 进行进一步操作)。

我个人几乎肯定会将数据库列转换为 DATETIME YEAR TO SECOND,并在必要时转换为输出时使用TO_CHAR 的字符串格式。列名现在将是 time_value(为了具体起见):

TO_CHAR(time_value, '%m/%d/%Y %I:%M %x')  -- What goes in place of x?

所引用的手册页不会立即导致格式字符串的完整规范。我认为一个相关的参考是GL_DATETIME environment variable,但发现这需要更多关于 Informix 产品集奥秘的知识而不是理想的(这不是任何人都应该想到的第一件事——甚至不是矿!)。如果这是正确的(可能是),那么在我的示例中,应该使用%p%r 之一来代替%x。我必须在我的机器上(重新)配置 Informix 才能对其进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2020-05-12
    • 2023-02-10
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多