' UNK-JAN-2015' 这是我的日期值。 UNK引用未知值。 现在我需要从那个月开始。 有没有办法找到它......
答案 0 :(得分:3)
SELECT
RIGHT(DateString, 4) [Year],
LEFT(RIGHT(DateString, 8), 3) [Month]
FROM YourTable
答案 1 :(得分:1)
使用SUBSTRING
<强>查询强>
SELECT SUBSTRING('UNK-JAN-2015',LEN('UNK-JAN-2015')-3,4);
使用RIGHT
<强>查询强>
SELECT RIGHT('UNK-JAN-2015', 4);
从给定字符串中获取月份,
<强>查询强>
SELECT SUBSTRING('UNK-JAN-2015',5,3) AS [Month];
答案 2 :(得分:0)
如果你想找到由-
分隔的最后一个标记,你可以使用它:
SELECT DT = REVERSE(SUBSTRING(REVERSE(@DateString),0,CHARINDEX('-',REVERSE(@DateString))))
这也会返回2015,所以最后一个破折号后面的文字。所以它不仅返回最后4个字符。使用UNK-JAN-2015/02/09
,它会返回2015/02/09
。
编辑:如果你想要中间部分,月份,你可以使用:
SELECT SUBSTRING(@DateString, CHARINDEX('-',@DateString)+1,LEN(@DateString)-CHARINDEX('-',@DateString,CHARINDEX('-',@DateString))-(CHARINDEX('-',@DateString)+1))
答案 3 :(得分:0)
<强>查询强>
declare @text varchar(100)
set @text='UNK-JAN-2015'
set @text= '<r>'+ REPLACE(@text,'-','</r><r>') + '</r>'
select i.value('r[2]','varchar(10)') AS Year
from (select cast(@text as xml) xml)out CROSS APPLY out.xml.nodes('/') x(i)
答案 4 :(得分:0)
要获取实际月份值,而不是简单地使用构成字符串月份部分的3个字符,您可以使用某些字符串操作将其转换为日期并从中提取月份:
DECLARE @val NVARCHAR(15) = 'UNK-JAN-2015'
SELECT CONVERT(DATETIME, RIGHT(@val, 4) + '-' + SUBSTRING(@val, 5, 3)) AS TheDate,
MONTH(CONVERT(DATETIME, RIGHT(@val, 4) + '-' + SUBSTRING(@val, 5, 3))) MonthNumber,
DATENAME(MONTH,
CONVERT(DATETIME, RIGHT(@val, 4) + '-' + SUBSTRING(@val, 5, 3))) [MonthName]
<强>输出:强>
TheDate MonthNumber MonthName
2015-01-01 00:00:00.000 1 January
这假设值始终采用相同的格式:XXX-MMM-YYYY
(其中XXX是一些前缀)