Sql server 存储过程中日期参数的SQL通配符
我有一个带有单个参数的存储过程Sql server 存储过程中日期参数的SQL通配符,sql-server,date,stored-procedures,wildcard,Sql Server,Date,Stored Procedures,Wildcard,我有一个带有单个参数的存储过程@date 该过程是一个select语句,包含: 其中dateTimeGmt介于@date和dateadd(dd,9,@date) 我希望能够调用此过程,并使用表中的所有日期获得所有结果 将@date设置为%或NULL或%-%-%不起作用 如果exec没有传递任何参数,是否有一种优雅的方法让过程忽略where子句 我希望能够调用此过程并获得所有结果 使用表中的所有日期 将@date设置为%或NULL或%-%-%无效 %比较仅适用于字符串类型,不适用于日期 是否有一种
@date
该过程是一个select
语句,包含:
其中dateTimeGmt介于@date和dateadd(dd,9,@date)
我希望能够调用此过程,并使用表中的所有日期获得所有结果
将@date
设置为%
或NULL
或%-%-%
不起作用
如果exec
没有传递任何参数,是否有一种优雅的方法让过程忽略where
子句
我希望能够调用此过程并获得所有结果
使用表中的所有日期
将@date设置为%或NULL或%-%-%无效
%比较仅适用于字符串类型,不适用于日期
是否有一种优雅的方式让程序忽略在哪里
子句,如果没有向exec传递参数
尝试如下更改where子句
where (dateTimeGmt between @date and dateadd(dd,9,@date) ) or @date IS NULL
我希望能够调用此过程并获得所有结果
使用表中的所有日期
将@date设置为%或NULL或%-%-%无效
%比较仅适用于字符串类型,不适用于日期
是否有一种优雅的方式让程序忽略在哪里
子句,如果没有向exec传递参数
尝试如下更改where子句
where (dateTimeGmt between @date and dateadd(dd,9,@date) ) or @date IS NULL
当@date和dateadd(dd,9,@date)之间的dateTimeGmt或@date为空时,trickYou可能想读Erland Sommarskog的当@date和dateadd(dd,9,@date)之间的dateTimeGmt或@date为空时,trickYou可能想读Erland Sommarskog的当@date和date之间的dateTimeGmt为空时,trickYou可能想读Erland Sommarskog的这是如何工作的?NULL是NULL返回所有内容,那么当日期是OR时为什么仍然返回子集呢?在NULL和NULL之间返回nothing,在这种情况下,NULL是NULL,返回所有内容。逻辑是否有良好的分解?如果将值传递给date参数,如果行日期在定义的日期之间,则条件的第一部分将返回true(true或false=>true),如果不是,则第一部分为false,因此(false或false=>false)将不返回行。对于第二种情况,当date参数为null时,第二部分始终为true,因此(false或true=>true)对于每一行,它将返回查询的每一行。这是如何工作的?NULL是NULL返回所有内容,那么当日期是OR时为什么仍然返回子集呢?在NULL和NULL之间返回nothing,在这种情况下,NULL是NULL,返回所有内容。逻辑是否有良好的分解?如果将值传递给date参数,如果行日期在定义的日期之间,则条件的第一部分将返回true(true或false=>true),如果不是,则第一部分为false,因此(false或false=>false)将不返回行。对于第二种情况,当date参数为null时,第二部分始终为true,因此对于每一行(false或true=>true),它将返回查询的每一行。