Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 为什么ISDATE()函数为';9966';?_Sql Server - Fatal编程技术网

Sql server 为什么ISDATE()函数为';9966';?

Sql server 为什么ISDATE()函数为';9966';?,sql-server,Sql Server,我使用ISDATE()函数检查值是否为日期。但当我输入9966或任何四位数字时,函数返回true 为什么会这样 检查值是否为日期的最佳方法是什么 是的,在某些情况下功能不可靠。所以,你应该学会如何 ISDATE函数中的值首先转换为datetime 及 如果varchar数据类型用于存储格式化日期(例如YYYYMMDD), 要检查它是否为有效日期,您不仅需要使用ISDATE() 函数,但也使用LEN()函数 9966隐式地可转换为datetime,因为它是1900年1月1日之后的9966天 SEL

我使用
ISDATE()
函数检查值是否为日期。但当我输入
9966
或任何四位数字时,函数返回true

  • 为什么会这样
  • 检查值是否为日期的最佳方法是什么
  • 是的,在某些情况下功能不可靠。所以,你应该学会如何

    ISDATE函数中的值首先转换为datetime

    如果varchar数据类型用于存储格式化日期(例如YYYYMMDD), 要检查它是否为有效日期,您不仅需要使用ISDATE() 函数,但也使用LEN()函数


    9966隐式地可转换为datetime,因为它是1900年1月1日之后的9966天

    SELECT DATEADD(day, 9966, 0) 
    
    试试这个(
    0
    is 1900年1月1日)


    哦我忘了告诉我我在使用MicrosoftSQLServer2008…文档有什么问题吗