从字符串4转换日期时间的语法错误
本文关键字:语法 错误 时间 日期 字符串 转换 | 更新日期: 2023-09-27 18:11:38
执行以下代码时出现此代码错误。如能帮助,不胜感激
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个地方可以进行日期转换:
-
CONVERT(DATETIME, CONVERT(CHAR(11), ro_shift_start, 106), 106)
-
CONVERT(DATETIME,CONVERT(CHAR(11), RO_Shift_Start,106),106)
-
UINON
前两种情况看起来你实际上是在努力度过没有时间的一天。如果是,则获取没有时间的日期;有多种方法可以做到这一点,但在sql server的最新版本中,将其转换为date
将工作得很好:
select cast(columnname as date) as [columnname]
或者如果你真的需要datetime
:
select cast(cast(columnname as date) as datetime) as [columnname]
在其他数据库版本中,您可以使用"将其转换为float"方法:
select cast(floor(cast(columnname as float)) as datetime) as [columnname]
UNION
更有趣;看起来它们是非常不同的形状——在这种情况下:为什么要合并它们?我非常怀疑[activity]
是datetime
,但这是它将成为专栏的一部分。这个错误完全有可能来自于试图将[activity]
转换为datetime
。