Sql 获取日期小于今天的行数

Sql 获取日期小于今天的行数,sql,sql-server,Sql,Sql Server,我已经做了以下工作,以获得今天的计数列表,日期少于今天。我已经完成了以下代码: select SUM(CASE WHEN (EXPIRYDAYE>= CONVERT(date, GETDATE())) > 1 then 1 else 0 end) from bottles; 但是,我认为这是一个错误: “>”附近的语法不正确 注意,我需要这样做计数。所以请帮助我用这种方法计算语法。谢谢您必须

我已经做了以下工作,以获得今天的计数列表,日期少于今天。我已经完成了以下代码:

select SUM(CASE WHEN (EXPIRYDAYE>= CONVERT(date, GETDATE())) > 1 
                then 1 
                else 0 
           end)
from bottles;
但是,我认为这是一个错误:

“>”附近的语法不正确


注意,我需要这样做计数。所以请帮助我用这种方法计算语法。谢谢

您必须像下面这样尝试

select SUM(CASE WHEN EXPIRYDAYE< CONVERT(date, GETDATE())  then 1 else 0 end)
试试这个

SELECT 
    SUM(
        CASE WHEN EXPIRYDAYE< CAST(GETDATE() AS DATE)
            THEN 1 
        ELSE 0 END)
选择
总数(
EXPIRYDAYE

您不需要在下面的1

简单查询适用于您的情况之前使用>符号。在执行此操作时,您不需要使用
CASE

SELECT COUNT(*) TotalCount
FROM YOUR_TABLE WHERE EXPIRYDAYE < CAST(GETDATE() AS DATE)
选择COUNT(*)TotalCount
从EXPIRYDAYE
注意,我需要这样做计数。所以,请帮我做这件事 以这种方式进行计数的语法


我不知道您为什么要以特定的方式执行此操作,而可以使用更高效的查询。

从tablename where dateWHEN
没有意义。
(EXPIRYDAYE>=CONVERT(date,GETDATE())>1
是什么意思?这里有两个布尔运算符,但没有
/
运算符。SQL Server不支持同一表达式中的多个布尔运算符。例如
,其中不允许使用Col1>Col2
。它必须写成
WHERE Col1>Col2和Col2
。这是某个更大查询的一部分吗?您可能只需要从您的表中选择COUNT(*)AS CNT,其中CAST(EXPIRYDATE AS DATE)SELECT COUNT(*) TotalCount FROM YOUR_TABLE WHERE EXPIRYDAYE < CAST(GETDATE() AS DATE)