C# 从字符串4转换日期时间时出现语法错误
执行以下代码时出现此代码错误。。我们将不胜感激C# 从字符串4转换日期时间时出现语法错误,c#,sql,datetime,C#,Sql,Datetime,执行以下代码时出现此代码错误。。我们将不胜感激 DECLARE @Last_Timestamp DATETIME, @New_Timestamp DATETIME SELECT DISTINCT Rtrim(of_displayname) + ' (' + Rtrim(ro_officer) + ')', CONVERT(DATETIME, CONVERT(CHAR(11), ro_shift_start
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)
这里有3个地方可以进行日期转换: CONVERTDATETIME,CONVERTCHAR11,ro_shift_start,106,106 CONVERTDATETIME,CONVERTCHAR11,RO_Shift_Start,106106 尤宁人 前两个看起来好像你真的想在没有时间的情况下度过一天。如果是这样的话:没有时间的一天;有多种方法可以做到这一点,但在最新版本的sql server中,将其强制转换为日期可以很好地工作:
select cast(columnname as date) as [columnname]
或者,如果您确实需要它作为日期时间:
在其他数据库版本上,可以使用sneeky将其转换为浮点方法:
select cast(floor(cast(columnname as float)) as datetime) as [columnname]
联盟更有趣;看起来这些是非常不同的形状-在这种情况下:你为什么要联合它们?我非常怀疑[活动]是否是日期时间,但它将成为该专栏的一部分。此错误完全可能来自尝试将[activity]转换为日期时间。请添加错误消息和DDL数据库定义。Msg 241,16级,状态1,第1行语法错误从字符串转换日期时间。您是否尝试检查ro_shift_start的内容,查看它们是否与预期格式匹配?尽管需要注意的是,由于@Last_Timestamp和@New_Timestamp都是空的,我们不应该期望在顶部网格中有任何行……通过查看您的代码,您正在将ro_shift_start转换为char,然后再次转换为datetime,您不能使用ro_shift_start而不是CONVERTDATETIME、CONVERTCHAR11、ro_shift_start,106?@KiranHegde我猜这是为了得到没有时间的日期——在这种情况下,可以使用其他方法,但同样:显示的方法应该很好,但效率低下;在这种情况下,我强烈怀疑真正的问题是工会
select cast(floor(cast(columnname as float)) as datetime) as [columnname]