SQL SERVER转换函数无法使用Varchar to Date

SQL SERVER转换函数无法使用Varchar to Date,sql,sql-server,Sql,Sql Server,我试图使用convert函数将存储为varchar(12)的日期转换为日期,返回时值不会改变 我尝试了CAST和CONVERT(Varchar(10),COL_Name,126),但都没有将值修改为我希望返回的日期。我认为问题可能在于我们使用的第三方服务以m(m)/d(d)/yyyy和yyyyymmdd00格式存储日期 SELECT CONVERT(varchar(10), SENIORITY, 126) SENIORITY from #TEMP1 SELECT CAST(SENIORITY

我试图使用convert函数将存储为varchar(12)的日期转换为日期,返回时值不会改变

我尝试了CAST和CONVERT(Varchar(10),COL_Name,126),但都没有将值修改为我希望返回的日期。我认为问题可能在于我们使用的第三方服务以m(m)/d(d)/yyyy和yyyyymmdd00格式存储日期

SELECT CONVERT(varchar(10), SENIORITY, 126) SENIORITY from #TEMP1

SELECT CAST(SENIORITY AS DATE) SENIORITY from #TEMP1
回报如下:

SENIORITY
8/14/2017
2017082200
2018031500
04/25/2011
04/25/2011
7/18/2011
06/20/2011
9/12/2011
7/17/2011
01/16/2012
我期待着:

SENIORITY
2017-08-14
2017-08-22
2018-03-15
2011-04-25
etc. 
我很确定这是因为它有时使用yyyymmdd00存储,但我不知道如何修改查询以正确解释和转换。有什么想法吗?

我想你想要:

select (case when sen9ority like '%/%/%'
             then convert(date, seniority, 101)
             else convert(date, left(seniority, 8))
        end)
或者,您可以使用
try\u convert()
coalesce()


示例中有2个
SELECT
语句,但输出中只有一个。如果第一个
SELECT
语句返回的数据类似于
'8/14/2017'
'2017082200'
,那么您的列
资历的数据类型就错了;这不是一个
日期
,而是一个
varchar
。将
varchar
转换为
varchar
没有任何效果。这是我尝试过的两种不同选择。我知道该列是varchar,我正在尝试将其转换为date。然后您需要使用
convert(date…
convert(varchar…
将值转换为
varchar
。您使用的SQL server版本是什么?@OneSQLUser第二个选项缺少一个逗号。这已更正。请务必通过接受答案来表示感谢。@OneSQLUser,很高兴您找到了答案!请单击以接受正确答案在左边的灰色复选标记上,该复选标记将变为绿色,当您单击它时,我们将看到它。它可以让其他用户知道该问题有一个有效的答案,并且还可以奖励您和发布答案的人一些声誉积分。
select coalesce(try_convert(date, seniority, 101),
                try_convert(date, left(seniority, 8))
               )