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

Posted

技术标签:

【中文标题】如何在 Informix 中转换插入日期时间的格式?【英文标题】:How to convert the format of inserted datetime in 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 函数? 【参考方案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 才能对其进行测试。

【讨论】:

以上是关于如何在 Informix 中转换插入日期时间的格式?的主要内容,如果未能解决你的问题,请参考以下文章

将日期时间值插入到 informix 表中失败

如何获得两个日期之间的差异(informix)?

在Oracle使用sql语句中如何插入日期格式的数据

Informix:.NET 驱动程序:默认日期时间格式

Informix 和 .NET 的时间和日期时间格式

php将日期格式转换为mysql格式以进行插入[重复]