4

我正在尝试将测试值'10.06.2011 10:24'插入到 informix 7.3(可悲)数据库中。目标列是

  • 系统日期时间
  • 长度:16
  • 精度 10

虽然这些工作

select  to_date('10.06.2011 10:24', "%d.%m.%Y %H:%M") from test;
INSERT into test values('10.06.2011')

这些不是

insert into test values('10.06.2011 10:24');
insert into test values(to_date('10.06.2011 10:24:00', "%d.%m.%Y %H:%M"))

我尝试了更多的方法,例如添加秒数,但如果有效,则没有。我得到的所有错误都是语法错误,没有任何详细信息。

任何建议表示赞赏。

4

2 回答 2

4

10.06.2011您尝试插入列的日期部分的格式DATETIME是错误的。

使用您的示例,接受的格式是:2011-10-06 10:24:00

于 2012-07-20T15:00:17.963 回答
4

您可以使用环境变量操纵DATE类型字段的呈现和解释方式。DBDATE将其设置为“DMY4”。将按照您显示的日期格式化日期。

但正如弗兰克所说,格式DATETIME是固定的:它必须是'YYYY-MM-DD hh:mm:ss.fffff'或部分,取决于所讨论DATETIME列的比例和精度。

更新(第二条评论有点长......)

您对“目标栏”格式的声明让我感到困扰。如果您运行以下命令:

dbschema -d <database> -t <table>

...结果将告诉您 Informix 理解的列定义。是一个DATE还是一个DATETIME

您可以在列中插入一个DATETIMEDATE(时间被截断),也可以在列中插入一个DATEDATETIME(时间默认为午夜)。但该值必须能够强制转换为目标列格式,并且DD.MM.YYYY hh:mmDATETIME.

于 2012-07-21T05:29:02.853 回答