我正在尝试将存储过程从Microsoft SQL Server 2000移动到Informix 11.原始SP包含一个最终选择语句,其中包含一个包括转换的DateTime的组:
group by convert(varchar(8), c.startDateTime, 1)
当我将其转换为Informix语法时,我会在运行时出现语法错误:
GROUP BY (c.startDateTime::DATETIME YEAR TO DAY)::VARCHAR(10)
任何人都可以向我指出,如果可能的话,这可以在Informix中完成?如果这是不可能的,我怀疑这是您通常如何在整体查询中处理的?
我认为您需要从中转换:
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
在Informix中,通常不需要将DateTime字段转换为字符字符串来操纵它们。而是使用扩展功能。
示例,如果将c.StartDateTime
定义为日期时间到第二年2012-10-28 23:00:00您只需要日期部分,使用扩展(c.StartDateTime
,每年)。这将返回2012-10-28。
您是否正在转换为Informix语法,以将日期转换为mm/dd/yyyy(mssql style = 1)as
TO_CHAR(c.StartDateTime,"%m/%d/%iY")
???