字符串:“ FileName-13012018.txt”
如何从column1 [varchar]中解析值[13012018]并插入到另一个column2 [date]中。
我可以使用substring / left / right函数进行解析,但是我无法插入column2 [date]。
我的目标是从多行中获取该日期并找出日期的最大值。
第1列
FileName-13012018.txt
FileName-14012018.txt
FileName-15012018.txt
结果:15012018
答案 0 :(得分:2)
函数datefromparts
从其各个部分创建日期。
考虑到您已经从字段结果中解析了“ fileName”和“ txt”,请尝试以下操作:
select max(
datefromparts(
right(result,4), --year
substring(result,3,2), --month
left(result,2) --day)
)
)
from table_with_parsed_result
答案 1 :(得分:1)
另一个可能的方法是删除不必要的字符并生成有效日期:
DECLARE @TmpTable TABLE (
FFileName varchar(50)
)
INSERT @TmpTable
VALUES
('FileName-13012018.txt'),
('FileName-14012018.txt'),
('FileName-15012018.txt')
SELECT
MAX(DATEFROMPARTS(
SUBSTRING(REPLACE(REPLACE(FFileName, 'Filename-', ''), '.txt', ''), 5, 4),
SUBSTRING(REPLACE(REPLACE(FFileName, 'Filename-', ''), '.txt', ''), 3, 2),
SUBSTRING(REPLACE(REPLACE(FFileName, 'Filename-', ''), '.txt', ''), 1, 2)
)) AS FMaxDate
FROM @TmpTable