如何检查sql server中具有出生日期格式的列是否具有yyyymmdd?
如何检查sql server中具有出生日期格式的列是否具有yyyymmdd?您可以使用ISDATE函数进行验证,但我不知道您使用的是哪个sql版本 范例如何检查sql server中具有出生日期格式的列是否具有yyyymmdd?,sql,sql-server,Sql,Sql Server,如何检查sql server中具有出生日期格式的列是否具有yyyymmdd?您可以使用ISDATE函数进行验证,但我不知道您使用的是哪个sql版本 范例 select ISDATE ( 1 ) ------------------ 0 select ISDATE ( 11111111 ) ------------------ 0 select ISDATE ( 20170501) ------------------ 1 您可以使用ISDATE函数进行验证,但我不知道您有哪个SQL
select ISDATE ( 1 )
------------------
0
select ISDATE ( 11111111 )
------------------
0
select ISDATE ( 20170501)
------------------
1
您可以使用ISDATE函数进行验证,但我不知道您有哪个SQL版本 范例
select ISDATE ( 1 )
------------------
0
select ISDATE ( 11111111 )
------------------
0
select ISDATE ( 20170501)
------------------
1
如果该列是字符类型(糟糕),则类似于“[12][0-9][0-9][0-9][0-1][0-9][0-3][0-9]”(在我的头顶)
如果这是一个日期时间,那么谁在乎呢,这是一个日期。如果列是字符类型(恶心),那么像“[12][0-9][0-9][0-9][0-1][0-9][0-3][0-9]”(我的头顶) 如果这是一个日期时间,那么谁在乎呢,这是一个日期。您可以使用:
select (case when try_convert(date, dob) is not null and
try_convert(int, dob) is not null
then 1 else 0
end)
我不是100%确定,但我认为yyyymmdd是通常能同时满足这两个条件的唯一格式。注意:无法知道20170601是否真的是6月1日或1月6日,因此这实际上无法验证字段的内容
但是,只要你能把它转换成日期,你为什么还要关心格式是什么呢?然后,您应该将该列更改为日期类型,并从此知道“格式”是正确的。您可以使用:
select (case when try_convert(date, dob) is not null and
try_convert(int, dob) is not null
then 1 else 0
end)
我不是100%确定,但我认为yyyymmdd是通常能同时满足这两个条件的唯一格式。注意:无法知道20170601是否真的是6月1日或1月6日,因此这实际上无法验证字段的内容
但是,只要你能把它转换成日期,你为什么还要关心格式是什么呢?然后,您应该将该列更改为日期类型,并从此知道“格式”是正确的。您是否询问如何验证字符字段是否为有效的yyyymmdd?请添加您正在使用的MSSQL版本。到目前为止您尝试实现了什么?请更具体一些。你的问题不是很清楚。你没有检查它的格式是否正确。而是将列数据类型设为date或datetime。不要使用不正确的数据类型,这些类型的问题会自行解决。列是varchar还是datetime?是否询问如何验证字符字段是有效的yyyymmdd?请添加您正在使用的MSSQL版本。到目前为止您尝试实现了什么?请更具体一些。你的问题不是很清楚。你没有检查它的格式是否正确。而是将列数据类型设为date或datetime。不要使用不正确的数据类型,这些类型的问题会自行解决。您的列是varchar还是datetime?但它也表示如果选择IsDate('2017-05-01')也作为1。我认为OP正在寻找它是否仅为YYYYMMDD格式…是的,该函数标识了有效日期,如select ISDATE('01/05/2015')。但它也表示如果select ISDATE('2017-05-01'),也为1。我认为OP正在查找它是否仅为YYYYMMDD格式…是的,该函数标识了有效日期,如select ISDATE('01/05/2015')。