Sql server SQL SERVER:日期格式DDMMYYYY

Sql server SQL SERVER:日期格式DDMMYYYY,sql-server,Sql Server,字符串:“FileName-13012018.txt” 如何从column1[varchar]解析值[13012018]并插入另一个column2[date] 我可以使用substring/left/right函数进行解析,但无法插入到column2[date]中 我的目标是从多行中获取此日期,并查找最大日期 专栏1 文件名-13012018.txt 文件名-14012018.txt 文件名-15012018.txt 结果:15012018函数datefromparts根据其部分创建日期 考虑

字符串:“FileName-13012018.txt”

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

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

我的目标是从多行中获取此日期,并查找最大日期

专栏1


文件名-13012018.txt

文件名-14012018.txt

文件名-15012018.txt


结果:15012018

函数
datefromparts
根据其部分创建日期

考虑到您已经从字段结果中解析了“fileName”和“txt”,请尝试以下操作:

select max(
            datefromparts(
                            right(result,4), --year
                            substring(result,3,2), --month
                            left(result,2) --day)
                        )
            )
from table_with_parsed_result

函数
datefromparts
根据其部分创建日期

考虑到您已经从字段结果中解析了“fileName”和“txt”,请尝试以下操作:

select max(
            datefromparts(
                            right(result,4), --year
                            substring(result,3,2), --month
                            left(result,2) --day)
                        )
            )
from table_with_parsed_result

另一种可能的方法是删除不必要的字符并生成有效日期:

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

另一种可能的方法是删除不必要的字符并生成有效日期:

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

您能告诉我们sql server的版本吗?这样我们就可以找到最简单的解决方案了?datefromparts()需要2012日期字符串是否始终占据与字符串结尾相同的位置?@GeorgeMenoutis its2014@Damien_The_Unbeliever它可能不同,我现在有了解析字符串的线索,但是比较解析后的值并将其视为日期并找到最大日期是我的工作problem@Damien_The_Unbeliever这是我的解析逻辑左(右(文件名,12),8)您能告诉我们sql server的版本吗,这样我们就可以找到最简单的解决方案了?datefromparts()需要2012日期字符串是否始终占据与字符串结尾相同的位置?@GeorgeMenoutis its2014@Damien_The_Unbeliever它可能不同,我现在有了解析字符串的线索,但是比较解析后的值并将其视为日期并找到最大日期是我的工作problem@Damien_The_Unbeliever这是我的解析逻辑左(右(文件名,12),8)