在 SQL 中从文件名中提取日期

问题描述 投票:0回答:1

我有一个像

abcdef_ghijkl_01172023.csv
这样的文件名,我想从这个字符串中提取日期
2023-01-17

我正在尝试使用这样的东西:

convert(datetime, cast(substring(FileName, (patindex('%[0-9]%', FileName)), 8) as date), 103)

但是我得到一个错误:

从字符串转换日期和/或时间时转换失败

你能帮忙吗?

sql sql-server tsql
1个回答
0
投票
DECLARE @filename NVARCHAR(100) = 'abcdef_ghijkl_01172023.csv'
DECLARE @dateString NVARCHAR(8) = SUBSTRING(@filename, CHARINDEX('_', @filename) + 1, CHARINDEX('.', @filename) - CHARINDEX('_', @filename) - 1)
DECLARE @inputDateFormat NVARCHAR(10) = 'MMddyyyy'
DECLARE @outputDateFormat NVARCHAR(10) = 'yyyy-MM-dd'

SELECT CONVERT(NVARCHAR(10), CONVERT(DATETIME, @dateString, @inputDateFormat), 120) AS formattedDate
© www.soinside.com 2019 - 2024. All rights reserved.