Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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 server中具有出生日期格式的列是否具有yyyymmdd?_Sql_Sql Server - Fatal编程技术网

如何检查sql server中具有出生日期格式的列是否具有yyyymmdd?

如何检查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

如何检查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

如果该列是字符类型(糟糕),则类似于“[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')。