2

我正在尝试将存储过程从 Microsoft SQL Server 2000 移动到 Informix 11。原始 SP 包含一个带有 GROUP BY 语句的最终选择语句,该语句包括转换后的日期时间:

group by convert(varchar(8), c.startDateTime, 1)

当我将其转换为 Informix 语法时,我在运行时遇到语法错误:

GROUP BY (c.startDateTime::DATETIME YEAR TO DAY)::VARCHAR(10)

谁能告诉我,如果可能的话,这可以在 Informix 中完成吗?如果这是不可能的,我怀疑,你通常会如何在整个查询中处理这个问题?

4

3 回答 3

2

我认为你需要从这个转换:

SELECT a, b, c 

FROM  ...

GROUP BY (c.startDateTime::DATETIME YEAR TO DAY)::VARCHAR(10) ;

类似于:

SELECT a, b, c, 
    (c.startDateTime::DATETIME YEAR TO DAY)::VARCHAR(10) AS d

FROM  ...

GROUP BY 4 ;        --- meaning: the 4th column in the SELECT clause
于 2012-10-26T20:15:30.317 回答
1

在 Informix 中,通常不需要将日期时间字段转换为字符串来操作它们。相反,请使用扩展功能。

例如,如果c.StartDateTime定义为日期时间年份到秒,例如 2012-10-28 23:00:00 并且您只想要日期部分,请使用 extend ( c.StartDateTime, year to day)。这将返回 2012-10-28。

于 2012-10-28T14:16:18.437 回答
0

您是否将日期的 Informix 语法转换为 mm/dd/yyyy (mssql style=1) 中的 varchar 作为

TO_CHAR(c.StartDateTime,"%m/%d/%iY")

???

于 2012-10-26T20:19:14.797 回答