我将日期/时间数据插入CHAR列,格式为:“6/4/2015 2:08:00 PM
”。
我希望这应该自动转换为格式:
“2015-06-04 14:08:00
”以便可以在查询中使用它,因为DATETIME的格式为YYYY-MM-DD hh:mm:ss.fffff
。
如何转换?
答案 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(重新)才能测试它。