Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据值是否可以转换为日期筛选nvarchar列?_Sql_Sql Server - Fatal编程技术网

Sql 根据值是否可以转换为日期筛选nvarchar列?

Sql 根据值是否可以转换为日期筛选nvarchar列?,sql,sql-server,Sql,Sql Server,我有一个数据库表,它的ETL过程和内容我无法更改,它有一个nvarchar列,该列主要由日期字符串和null组成。然而,偶尔会出现“不适用”或“不接受”的情况 有没有办法只获取有效日期字符串的值 输入: 2019-01-01 N/A null 2019-03-04 输出 2019-01-01 2019-03-04 一种简单的方法是使用try\u cast()或try\u convert(): 尝试解析?请注意,这不是使用索引-不可搜索。糟糕的表现。试着在一个字段上解析一个函数,然后对该字段进

我有一个数据库表,它的ETL过程和内容我无法更改,它有一个
nvarchar
列,该列主要由日期字符串和null组成。然而,偶尔会出现“不适用”或“不接受”的情况

有没有办法只获取有效日期字符串的值

输入:

2019-01-01
N/A
null
2019-03-04
输出

2019-01-01
2019-03-04

一种简单的方法是使用
try\u cast()
try\u convert()


尝试解析?请注意,这不是使用索引-不可搜索。糟糕的表现。试着在一个字段上解析一个函数,然后对该字段进行索引就行了。尽管修复数据本身(将其更改为
日期
)才是真正的解决方案,但我们不要拐弯抹角。您给出的两个示例的格式都是
yyyy-MM-dd
,但我对您有
01/02/03
这样的值并不感到惊讶,如果是这样的话,您会受到伤害。@Larnu我同意,但这是一个第三方数据库,他们已经告诉我他们不会修复它。“不会”并不意味着不应该或不能。我个人会敦促第三方修复它;这不是一个“功能”,而是一个bug,可能会就此发出支持电话。
select t.*
from t
where try_cast(datecol as date) is not null;