Informix `%iY` 和 `%Y` 格式有啥区别

Posted

技术标签:

【中文标题】Informix `%iY` 和 `%Y` 格式有啥区别【英文标题】:What is the difference between Informix `%iY` and `%Y` formatInformix `%iY` 和 `%Y` 格式有什么区别 【发布时间】:2017-06-20 14:00:00 【问题描述】:

我在一些我维护的代码中发现他们使用这种格式进行更新查询

UPDATE X=to_date('$var','%iY-%m-%d %H:%M:%S.%F3') ...

但我在 Informix 文档中的任何地方都找不到 i 的用途。运行下一个查询将产生相同的值。

SELECT TO_CHAR(CURRENT, '%Y-%m-%d %H:%M:%S%F3')  as wo_I, 
       TO_CHAR(CURRENT, '%iY-%m-%d %H:%M:%S%F3') as with_I FROM X; 

wo_i                    | with_i
------------------------|------------------------
2017-06-20 16:49:44.712 | 2017-06-20 16:49:44.712

那么我错过了什么?

我查看的资源:

    https://www.ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.sqlt.doc/ids_sqt_130.htm https://www.ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.sqlt.doc/ids_sqt_129.htm http://www.sqlines.com/informix-to-oracle/to_char_datetime

【问题讨论】:

【参考方案1】:

很难找到,但您需要的信息的一个位置(假设您使用 Informix 11.70 而不是 12.10,尽管它可能没有太大变化)是:

Client APIs and Tools — GLS User's Guide — GLS Environment Variables

特别是,它说:

%iy — 替换为两位数 (00 - 99) 的年份,用于阅读和打印。它是针对 %y 的 IBM Informix 特有的格式化指令。 %iY — 替换为四位数字 (0000 - 9999) 的年份,用于阅读和打印。它是针对 %Y 的 IBM Informix 特有的格式化指令。 … %y — 要求年份是两位数(00 到 99),用于阅读和打印。 %Y — 要求年份是一个四位数(0000 到 9999),用于阅读和打印。

两者之间显然没有太大区别——我什至不确定我是否理解应该有什么区别。我认为这可能是在 1、2 或 3 位数年份数字上接受但不要求前导零之间的区别。但在大多数情况下,您似乎可以将它们视为等价的。

【讨论】:

感谢您找到这个,我希望得到一个明确的答案,我也通过电子邮件发送给 Informix 支持,但仍然没有得到他们的任何答复。

以上是关于Informix `%iY` 和 `%Y` 格式有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

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

定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数

欧拉公式的证明

在 Informix DB 中将字符串转换为日期

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

informix-時間格式的各種用法