为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕斯709654 2021-11-19 17:03:49
我有这个查询的问题。我在下面收到以下错误。我想要做的是将 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 FROMemployeesschedulelist 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'在不更改我的专栏的情况下,还有其他解决方案吗?
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以使用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'


查看完整回答
反对 回复 2021-11-19
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

试试这个。


SELECT 

CONVERT(TIME,(LEFT(schedulename,8))) AS login,

CONVERT(TIME,(RIGHT(schedulename,8))) AS logout 

FROM employeesschedulelist 

WHERE employeeidno='D0150000005'


查看完整回答
反对 回复 2021-11-19
  • 2 回答
  • 0 关注
  • 878 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信