【发布时间】:2014-10-13 20:53:10
【问题描述】:
最后一个字段STEPCD是varchar(10)。
如果我删除 where 语句 smsdss.c_cfvhs_EMSTAT_ORDERS.STEPCD = '10006' 查询运行正常。但是当我添加这个时,我得到了错误:
Conversion failed when converting date and/or time from character string.
如果 STEP 代码为 varchar,则此日期/时间错误来自哪里?
Select CP_Population.*, CHRTNO,PRSNTINGCOMPL,DISPOCD,
CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.ARRVDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.ARRVTIME AS time), 120) AS [ED_Arrival_dtime],
CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHTIME AS time), 120) AS [ED_Discharge_dtime],
DATEDIFF(MINUTE,CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.ARRVDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.ARRVTIME AS time), 120),
CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHTIME AS time), 120)) AS [ED_Arrival to ED_Discharge],
CASE
WHEN CP_Population.vst_type_cd = 'O'
THEN DATEDIFF(MINUTE,CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHTIME AS time), 120), CP_Population.op_released)*1.0/60
WHEN CP_Population.vst_type_cd = 'I'
THEN DATEDIFF(MINUTE,CONVERT(DATETIME, CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHDATE AS datetime)
+ CAST(smsdss.c_cfvhs_EMSTAT_CHART.DSCHTIME AS time), 120), CP_Population.vst_end_dtime)*1.0/60 ELSE NULL END
As [Unit_LOS],
STEPCD
FROM CP_Population INNER JOIN smsdss.c_cfvhs_EMSTAT_CHART
ON right('00' + smsdss.c_cfvhs_EMSTAT_CHART.VISITNO,12) COLLATE SQL_Latin1_General_Pref_CP1_CI_AS = CP_Population.pt_id
LEFT OUTER JOIN smsdss.c_cfvhs_EMSTAT_ORDERS ON smsdss.c_cfvhs_EMSTAT_CHART.CHRTNO = smsdss.c_cfvhs_EMSTAT_ORDERS.CHARTNO
LEFT OUTER JOIN smsdss.c_cfvhs_EMSTAT_DISPO ON smsdss.c_cfvhs_EMSTAT_CHART.DISPOCD = smsdss.c_cfvhs_EMSTAT_DISPO.CODE
WHERE TYPE = 'A'
AND smsdss.c_cfvhs_EMSTAT_ORDERS.STEPCD = '10006' <--ERROR
【问题讨论】:
-
看起来它是一个日期时间列,但您传递的日期无效
标签: sql datetime-format