转换输入时间时从字符串转换日期and/or时间时转换失败 | SQL, SQLSRV
Conversion failed when converting date and/or time from character string when converting inputted time | SQL, SQLSRV
我对这个查询有疑问。我在下面收到以下错误。
我想做的是将 10:00 PM 转换为 22:00,基本上是从 12 小时格式转换为 24 小时格式。
Msg 241, Level 16, State 1, Line 2
Conversion failed when converting date and/or time from character string.
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'
在不更改我的专栏的情况下,是否有其他解决方案?
试试这个。
SELECT
CONVERT(TIME,(LEFT(schedulename,8))) AS login,
CONVERT(TIME,(RIGHT(schedulename,8))) AS logout
FROM employeesschedulelist
WHERE employeeidno='D0150000005'
您可以使用 TRY_CAST()
而不是 CAST()
。如果转换失败,它将return 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'
我对这个查询有疑问。我在下面收到以下错误。
我想做的是将 10:00 PM 转换为 22:00,基本上是从 12 小时格式转换为 24 小时格式。
Msg 241, Level 16, State 1, Line 2 Conversion failed when converting date and/or time from character string.
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'
在不更改我的专栏的情况下,是否有其他解决方案?
试试这个。
SELECT
CONVERT(TIME,(LEFT(schedulename,8))) AS login,
CONVERT(TIME,(RIGHT(schedulename,8))) AS logout
FROM employeesschedulelist
WHERE employeeidno='D0150000005'
您可以使用 TRY_CAST()
而不是 CAST()
。如果转换失败,它将return 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'