tsql尽可能将字符串转换为日期

tsql尽可能将字符串转换为日期,tsql,azure-sql-database,Tsql,Azure Sql Database,我有一个列要导入到Azure SQL DB中,该数据库应该只包含日期,但当然包含错误 在TSQL中,我想做一些类似的事情:如果可能,则转换为日期,否则为空 有人知道一个测试字符串到日期的可转换性的语句吗?使用TryCast或Isdate select try_Cast('test' as date) select try_Cast('4' as date) select case when ISDATE('test')=1 then cast('test' as date) else n

我有一个列要导入到Azure SQL DB
中,该数据库应该只包含日期,但当然包含错误

TSQL
中,我想做一些类似的事情:如果可能,则转换为日期,否则为空

有人知道一个测试字符串到日期的可转换性的语句吗?

使用TryCast或Isdate

select 
try_Cast('test' as date)
select try_Cast('4' as  date) 

select case when ISDATE('test')=1 then cast('test' as date) else null end
如果表达式不是预期的格式,即不允许表达式的显式转换,则TryCast将失败

select 
try_cast( 4 as xml)
select try_Cast(4 as date)
您可以使用:

返回表达式的结果,转换为请求的数据类型,如果转换失败,则返回null。使用
TRY\u PARSE
仅用于从字符串转换为日期/时间和数字类型

此外,您还可以添加文化:

SELECT TRY_PARSE('10/25/2015' AS DATE USING 'en-US')

和进口:

INSERT INTO target_table(date_column, ...)
SELECT TRY_PARSE(date_string_column AS DATE) ...
FROM source_table
...

谢谢,这是我一直在寻找的答案。这更好。谢谢你需要接受任何一个对你有帮助的答案,否则这个问题将显示为未回答。如果你对下面的任何答案不满意,你可能需要更新问题,了解下面的答案没有解决的问题
INSERT INTO target_table(date_column, ...)
SELECT TRY_PARSE(date_string_column AS DATE) ...
FROM source_table
...