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



我将日期/时间数据以如下格式插入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值,在输入时转换它,(如果需要)在输出时重新转换。但是,如果您将经常显示该值而不进行计算(包括比较或排序),那么可能可以使用依赖于语言环境的洛可可字符串表示法。

将字符串转换为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环境变量,但是要找到它,需要对Informix产品集的奥秘有更多的了解(它是而不是,任何人都应该想到的第一件事—甚至不是我!)。如果这是正确的(它可能是),那么%p%r中的一个应该在我的例子中代替%x。我必须在我的机器上重新配置Informix,以便能够对它进行测试。

相关内容

  • 没有找到相关文章

最新更新