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

时间:2015-07-06 11:10:40

标签: datetime informix

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

如何转换?

1 个答案:

答案 0 :(得分:0)

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

将字符串转换为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到第二年 - 或者可能是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产品集的奥秘而不是理想的(它不是不是应该给任何人带来的第一件事&#39心灵 - 甚至不是我的!)。如果这是正确的(可能是),则应在我的示例中使用%p%r中的一个代替%x。我必须在我的机器上配置Informix(重新)才能测试它。