我有一个包含varchar值的列。我想把字符串部分从第一个空格带到第二个空格。
例: DB Value 10/15/2015 10:05:02 AM
返回值10:05:02
我怎样才能做到这一点?
答案 0 :(得分:1)
对于db值AM
,
DECLARE @val AS VARCHAR(100)='10/15/2015 10:05:02 AM'
SELECT @val = CONVERT(TIME ,@val)
SELECT SUBSTRING(@val ,1 ,8) RetValue
下面有db值PM
,
DECLARE @val AS VARCHAR(100)='10/15/2015 10:05:02 PM'
SELECT @val = CONVERT(TIME ,@val)
SELECT SUBSTRING(@val ,1 ,8) RetVal
如果您使用的是sql-server 2008并且收到以下错误,
类型TIME不是定义的系统类型。
然后试试这个,
DECLARE @val AS VARCHAR(50)='2/15/2015 10:05:02 PM'
SELECT CONVERT(VARCHAR ,CAST(@val AS DATETIME) ,108) ReturnValue
如果您的数据库值类似于'12/15/2015 10:05:02 AM'
或'02/15/2015 10:05:02 PM'
,但仍希望结果为 12小时格式,则可以执行以下操作,
DECLARE @val AS VARCHAR(50)='02/15/2015 10:05:02 PM'
--SET @val = SUBSTRING(@val,1,19)
SELECT CONVERT(VARCHAR ,CAST(SUBSTRING(@val,1,19) AS DATETIME) ,108) ReturnValue
' 02/15/2015 10:05:02 PM
'和' 2/15/2015 10:05:02 PM
' - 两者都会返回您的预期结果。
答案 1 :(得分:0)
Declare @temp nvarchar(50)= cast('10/15/2015 10:05:02 AM' as time)
现在,@ temp仅包含时间值。 如果你想从行中删除毫秒,那么你可以使用SUBSTRING函数。
Select SUBSTRING(@temp,1,8)