我有一个像
abcdef_ghijkl_01172023.csv
这样的文件名,我想从这个字符串中提取日期2023-01-17
。
我正在尝试使用这样的东西:
convert(datetime, cast(substring(FileName, (patindex('%[0-9]%', FileName)), 8) as date), 103)
但是我得到一个错误:
从字符串转换日期和/或时间时转换失败
你能帮忙吗?
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