猿问

转换输入时间时从字符串转换日期和/或时间时转换失败| SQL、SQLSRV

我有这个查询的问题。我在下面收到以下错误。


我想要做的是将 10:00 PM 转换为 22:00,基本上从 12 小时格式转换为 24 小时格式。


消息 241,级别 16,状态 1,第 2 行 从字符串转换日期和/或时间时转换失败。


schedulename 列的值为


晚上 10:00 - 早上 06:00


晚上 10:00 - 早上 06:00


和一行称为REST


我将它设置为LEFT(schedulename,8)这样我可以在左侧获得时间表,然后RIGHT(schedulename,8)在右侧获得时间表。


我正在使用 SQLSRV、SQLSERVER 2012 和 XAMPP。


SELECT 

Format(cast(LEFT(schedulename,8) as datetime),'HH:mm:ss') AS login,

Format(cast(RIGHT(schedulename,8) as datetime),'HH:mm:ss') AS logout 

FROM

employeesschedulelist 

WHERE 

employeeidno='D0150000005'

我也试过这个,但没有运气。


SELECT 

CONVERT(VARCHAR, LEFT(schedulename,8), 108) as login,

 CONVERT(VARCHAR, RIGHT(schedulename,8), 108) as logout 

from employeesschedulelist 

where employeeidno='D0150000005'

在不更改我的专栏的情况下,还有其他解决方案吗?


慕斯709654
浏览 879回答 2
2回答

阿波罗的战车

您可以使用TRY_CAST()代替CAST(). 如果转换失败,它将返回NULL。SELECT FORMAT(TRY_CAST(LEFT(schedulename ,8) AS DATETIME),'HH:mm:ss') AS login,       FORMAT(TRY_CAST(RIGHT(schedulename, 8) AS DATETIME),'HH:mm:ss') AS logout FROM employeesschedulelist WHERE employeeidno = 'D0150000005'

Smart猫小萌

试试这个。SELECT CONVERT(TIME,(LEFT(schedulename,8))) AS login,CONVERT(TIME,(RIGHT(schedulename,8))) AS logout FROM employeesschedulelist WHERE employeeidno='D0150000005'
随时随地看视频慕课网APP
我要回答