'UNK-JAN-2015' 这是我的日期值。UNK 是指未知值。现在我只需要一个月。有什么办法可以找到......
问问题
2511 次
5 回答
3
SELECT
RIGHT(DateString, 4) [Year],
LEFT(RIGHT(DateString, 8), 3) [Month]
FROM YourTable
于 2015-03-10T10:36:47.267 回答
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];
于 2015-03-10T10:40:53.090 回答
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))
于 2015-03-10T10:42:51.030 回答
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 是某个前缀)
于 2015-03-10T11:11:17.890 回答
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)
于 2015-03-10T11:03:01.430 回答