查询数据库以显示基于当前日期和月份的数据总数
Posted
技术标签:
【中文标题】查询数据库以显示基于当前日期和月份的数据总数【英文标题】:Query database to display the total count of data based on current date and month 【发布时间】:2018-08-20 09:08:35 【问题描述】:我想查询我的 SQL 数据库以根据当前日期和月份显示其中的数据总数,但我的查询同时计算当前日期和上一个日期。例如,如果 20/08/2018 有 2 个条目,20/07/2018 有 4 个条目,则它返回 6 作为总计数,而我希望查询仅返回当前日期或月份的条目,而不是以前的条目。
这里是查询:
var today = db.QueryValue("select count(*) FROM UserName where DAY(signed_in ) = datepart(DAY, getdate());");
var month = db.QueryValue("select count(*) FROM UserName where MONTH(signed_in ) = datepart(month,getdate());");
【问题讨论】:
我不太了解您的问题,但这是您的需要(或使用 AND 而不是 OR): select count(*) FROM UserName where DAY(signed_in ) = datepart(DAY, getdate()) OR MONTH(signed_in) = datepart(month,getdate()) 如果您要查找月份中的当前日期,为什么需要日期函数?只是比较日期 感谢您的 cmets 还是不行datepart(DAY, getdate())
选择月份中的哪一天。如果您有 20/08/2018 的 2 个条目和 20/07/2018 的 4 个条目,那么将总共有 6 个条目,其中当月的日期 = 20。
【参考方案1】:
天数
select count(*) FROM UserName where DAY(signed_in) = DAY(getdate()) AND MONTH(signed_in) = MONTH(getdate()) AND YEAR(signed_in) = YEAR(getdate());
月数
select count(*) FROM UserName where MONTH(signed_in) = MONTH(getdate()) AND YEAR(signed_in) = YEAR(getdate());
【讨论】:
为什么要拆分日期进行第一次计数?如果要比较日、月、年,只需比较两个日期,不要分开。 我认为他不想关心这些日期的时间,而 getdate() 将其提供给您。这就是我这样做的原因,或者他可以将它们转换为date
类型而不是 datetime
。【参考方案2】:
day()
从日期中提取月份中的某天,它不会将日期截断为日期,正如您可能已经想到的那样,所以当然第一个查询返回所有日期的计数月份等于今天的月份。
要仅获取今天的数字,请尝试:
SELECT count(*)
FROM username
WHERE convert(date, signedin) = convert(date, getdate());
convert()
ing 到 date
会删除时间部分(一天中的小时、分钟等)。
要获取月份的数字,还包括年份。或者您将计算任何一年中的月份。
SELECT count(*)
FROM username
WHERE month(signedin) = month(getdate())
AND year(signedin) = year(getdate());
【讨论】:
select count(*) FROM UserName, Meeting where YEAR(signed_in) = datepart(YEAR, getdate());如果我尝试选择 2 列,我会收到一条错误消息,上面写着不明确的列名“已签名”。请帮忙【参考方案3】:进行这些比较的简单方法:
where cast(signed_in as date) = cast(getdate() as date)
where eomonth(signed_in) = eomonth(getdate())
【讨论】:
以上是关于查询数据库以显示基于当前日期和月份的数据总数的主要内容,如果未能解决你的问题,请参考以下文章