SQL SERVER:日期格式DDMMYYYY

时间:2018-11-07 13:02:24

标签: sql-server

字符串:“ FileName-13012018.txt”

如何从column1 [varchar]中解析值[13012018]并插入到另一个column2 [date]中。

我可以使用substring / left / right函数进行解析,但是我无法插入column2 [date]。

我的目标是从多行中获取该日期并找出日期的最大值。

第1列


FileName-13012018.txt

FileName-14012018.txt

FileName-15012018.txt

结果:1​​5012018

2 个答案:

答案 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