【发布时间】:2014-07-07 09:26:54
【问题描述】:
执行以下代码时出现此代码错误.. 帮助将不胜感激
DECLARE @Last_Timestamp DATETIME,
@New_Timestamp DATETIME
SELECT DISTINCT Rtrim(of_displayname) + ' ('
+ Rtrim(ro_officer) + ')',
CONVERT(DATETIME, CONVERT(CHAR(11), ro_shift_start, 106), 106),
Rtrim(ac_name) + ' (' + Rtrim(ac_pin) + ')',
ro_officer
FROM roster WITH(nolock),
template WITH(nolock),
activity WITH(nolock),
officer WITH(nolock)
WHERE ro_status = 'INFO'
AND ro_activity IN ( 'LEAVE', 'SAL LEAVE' )
AND ro_timestamp > @Last_Timestamp
AND ro_timestamp <= @New_Timestamp
AND ro_shift_start > Getdate()
AND ac_pin = to_activity
AND to_pin = ro_officer
AND Unicode(to_type) = Unicode('M')
AND ro_officer = of_pin
--AND (Of_Payroll_No IN ('w','s')
AND ac_product_code IN ( '01', '09' ) /* Corporate Only */ /* W & S */
UNION
SELECT [officer],
[activity],
[status],
[comment]
FROM production.rolecall.[dbo].[holidayrequest]
ORDER BY Rtrim(of_displayname) + ' ('
+ Rtrim(ro_officer) + ')',RTRIM(Of_Displayname) + ' (' + RTRIM(Ro_Officer) + ')',CONVERT(DATETIME,CONVERT(CHAR(11), RO_Shift_Start,106),106)
【问题讨论】:
-
请添加错误消息和ddl(数据库定义)。
-
Msg 241, Level 16, State 1, Line 1 从字符串转换日期时间的语法错误。
-
您是否尝试过检查
ro_shift_start的内容,看看它们是否符合预期的格式?虽然请注意,由于@Last_Timestamp和@New_Timestamp都是null,但我们不应该期望此处顶部网格中有任何行... -
通过查看您的代码,您正在将 ro_shift_start 转换为 char,然后再次转换为 datetime,您不能只使用 ro_shift_start 而不是 CONVERT(DATETIME, CONVERT(CHAR(11), ro_shift_start, 106)?
-
@KiranHegde 我猜这是为了“获取没有时间的日期” - 在这种情况下,还有其他方法可以使用,但同样:显示的 应该是很好(但效率低下);在这种情况下,我强烈怀疑真正的问题是
UNION