如何在Informix 中转换插入日期时间的格式?

How to convert the format of inserted datetime in Informix?

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

如何转换?

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

将字符串转换为 DATETIME 值的关键函数是 TO_DATE. You also need to look at the 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 产品集的奥秘有更多的了解(这是 而不是 首先应该 spring 在任何人的脑海中——甚至不是我的!)。如果那是正确的(可能是),那么在我的例子中应该使用 %p%r 之一来代替 %x。我必须在我的机器上(重新)配置 Informix 才能对其进行测试。