如何在 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 中转换插入日期时间的格式?的主要内容,如果未能解决你的问题,请参考以下文章