Tsql 从Sybase中的超长字符串名称列中提取日期

Tsql 从Sybase中的超长字符串名称列中提取日期,tsql,sybase,Tsql,Sybase,我在Sybase中使用这些表,该表具有列“ID”,“File\u Name” 表1 IDS File_Name_Attached 123 ROSE1234_abcdefghi_03012014_04292014_190038.zip 456 ROSE1234_abcdefghi_08012014_04292014_190038.zip 我所需要的只是选择文件名中给出的第一个日期 所需: IDS Dates 123 03012014 456 080

我在Sybase中使用这些表,该表具有列“ID”,“File\u Name”

表1

IDS    File_Name_Attached
123    ROSE1234_abcdefghi_03012014_04292014_190038.zip   
456    ROSE1234_abcdefghi_08012014_04292014_190038.zip
我所需要的只是选择文件名中给出的第一个日期

所需:

IDS     Dates  
123    03012014
456    08012014

您可以使用
SUBSTRING
PATINDEX
查找日期的开始索引:

CREATE TABLE #table1(IDS int, File_Name_attached NVARCHAR(100));

INSERT INTO #table1
VALUES (123, 'ROSE1234_abcdefghi_03012014_04292014_190038.zip'),
(456, 'ROSE1234_abcdefghi_08012014_04292014_190038.zip');

SELECT
  IDS,
  [DATES] = SUBSTRING(File_Name_attached,
                      PATINDEX('%_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_%', File_Name_attached) + 1,
                      8)
FROM #table1;
警告


我没有用于测试的Sybase DB,因此如果这不起作用,请告诉我。

它将作为计划文本提供如何转换为常规日期格式MM/DD/YYYY@Qasim0787
声明@D NVARCHAR(100)='03012014';选择cast(右(@D,4)+子字符串(@D,3,2)+左(@D,2)作为日期时间