将datetime值插入informix表失败

时间:2012-07-20 14:03:40

标签: sql datetime informix

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

  • System.DateTime的
  • 长度:16
  • precision 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"))

我尝试了几个更多的东西,比如添加secounds,但是如果它有效则没有。所有我得到的错误是语法错误,没有任何详细信息。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

但正如弗兰克所说,DATETIME的格式是固定的:它必须是'YYYY-MM-DD hh:mm:ss.fffff'或其中的一部分,具体取决于相关DATETIME列的比例和精度。< / p>

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

我对您对“目标列”格式的声明感到不安。如果您运行以下内容:

dbschema -d <database> -t <table>

...结果会告诉你Informix理解它的列定义。是DATE还是DATETIME

您可以在DATETIME列中插入DATE值(时间会被截断),您可以将DATE插入DATETIME列(时间默认为午夜)。但该值必须能够强制转换为目标列格式,而DD.MM.YYYY hh:mmDATETIME无效。